よくある質問 シリアル値 (tp0049) マクロ 強制終了 (tp0038) mが0に jが1に kが2に (tp1009) 三角関数の基礎 (tp0050) 20以上の丸囲み数字を使う (tp0020) セル左上 緑色の三角 (tp0045) 表示形式を追加できません (tp0018) セル内で改行 (tp0046) 二次関数のグラフ (tp0053) エクセルの関数を自分で作る (tp0501) もっと [よくある質問] を見る
いくつかの応用サンプルを紹介します。今までのページで解説していない使い方もあります。 VBEの操作を誤ると、マクロコードを消してしまったり、Module1などのコンポーネントを削除してしまうこともあります。実行には十分注意してください。 アクティブブックの全標準モジュールをエクスポートする 複数のブックに同じマクロを追加する 複数ブックのマクロを置換する Book1のモジュールをBook2にコピーする UserFormを作成する 自分自身を削除するマクロ アクティブブックの全標準モジュールをエクスポートする Sub Sample1() Dim VBC Const Path As String = "C:\Work\" With ActiveWorkbook.VBProject For Each VBC In .VBComponents If VBC.Type = 1 And _ VBC.C
【ファイル名】VBProject.xlsm 【バージョン】Ver 1.1.1 【作成日】2015年02月24日 【更新日】2015年02月28日 【動作確認】Windows 7 【必要なソフト】Microsoft Excel 2010 【ダウンロード】VBProject.zip 【説明】VBAからVisual Basic Editorを使用するサンプルです。 【注意】実行するにはオプションの「VBA プロジェクト オブジェクト モデルへのアクセルを信頼する」にチェックを入れます。 VBEのメニュー バーのメニュー、プロジェクト ウィンドウとコード ウィンドウの右クリックメニュー、ツール バーをカスタマイズします。 VBProject.xlsmを編集すると追加したメニューなどのコマンドが実行できなくなります。実行するには一度閉じてから再度開いてください。 実行時エラー'1004': プログラ
CodeModule.AddFromFile メソッド 指定したファイルの内容を対象のオブジェクト(モジュール)に追加します。 この時、モジュール内にすでにプロシージャが存在する場合は、最も上にあるプロシージャの上に挿入されます。プロシージャが含まれていない場合は、モジュールの最後に追加されます。
※ 冗談の通じない方はご退場願います。 はじめに私の立場を明確にしておくと、私は個人的にFileSystemObject(以降FSOと記載)が好きで、Dir関数はあまり好きではない。従ってDir関数で事足りる処理でも基本的にVBAコードではFSOを利用する。この記事ではその理由を述べ、Dir派の方をFSO派に改宗させることを目的としたいと思う。悪を滅し、正義の光あらんことを。なんつって。 さて、まずはDir関数がいかに貧相であるかをご覧いただきたい。Dirで出来ることは主に以下の三つである。 指定したファイル・フォルダの存在チェック 指定したパターンにマッチするファイル名の取得 指定したフォルダ内のサブフォルダ・ファイルの一覧取得 機能豊富なFSOにとってこれしきの事は朝飯前である。 FSOが如何に機能豊富であるかはFSOが備える以下のメソッド群を見てもらえば一目瞭然。 BuildPath
【書式】 FileSystemObject.GetFile(filespec) 指定したファイルを表すFileオブジェクトを返します。 引数filespecにはファイル名を含むパスを指定します。 Sub test17() Dim FSO As Object, FileObject As Object Set FSO = CreateObject("Scripting.FileSystemObject") ''C:\Book1.xlsxのサイズを返します Set FileObject = FSO.GetFile("C:\Book1.xlsx") MsgBox FileObject.Size Set FileObject = Nothing Set FSO = Nothing End Sub
任意のフォルダに存在するすべてのファイル名を取得するには、Dir関数にワイルドカードを指定します。次のコードは、C:\Sampleフォルダに存在するすべての「*.xlsx」をアクティブシートに書き出します。 Sub Sample1() Dim buf As String, cnt As Long Const Path As String = "C:\Sample\" buf = Dir(Path & "*.xlsx") Do While buf <> "" cnt = cnt + 1 Cells(cnt, 1) = buf buf = Dir() Loop End Sub Dir関数にワイルドカードを指定して実行すると、まずそのワイルドカードに一致するファイル名が返ります。次に、Dir関数の引数を省略して実行すると、前回に指定されたワイルドカードが指定されたものとしてファイルを探します。そ
CodeModuleオブジェクトでよく使われるメソッドを解説します。 AddFromFileメソッド・AddFromStringメソッド AddFromFileメソッドは、指定したファイルの内容を、コードモジュールに挿入します。挿入される位置は、最初のプロシージャの直前です。挿入される位置を指定することはできません。 ここでは、C:\Work\Macro.txtに次のようなデータが保存されているとします。 Sub Sample15() With ThisWorkbook.VBProject.VBComponents("Module1").CodeModule .AddFromFile "C:\Work\Macro.txt" End With End Sub の状態で実行すると、 となります。 AddFromStringメソッドは、指定した文字列を、コードモジュールに挿入します。挿入される位
配列の宣言、初期化、再定義 配列では同じデータ型の変数をたくさん扱う場合に、一つのかたまりとして扱うことができます。配列内のひとつひとつのデータを要素といいます。 それぞれの要素にはインデックス番号(添字)を指定することでアクセスすることができます。配列を宣言する際に、要素数と次元数が決まっている配列を固定長配列といいます。 これに対して、要素数と次元数が決まっていない配列を可変長配列や動的配列といいます。 配列の宣言、定義 それでは配列を宣言、定義する方法についてみていきましょう。 固定長配列と可変長配列で宣言の方法が少々異なります。固定長変数は配列名のあとに「()」(カッコ)を使って下記のように宣言します。 Dim 配列名(添字の上限値) As データ型名 可変長配列の場合は、宣言時には要素数や次元数は指定しません。 Dim 配列名() As データ型名 Arrayで初期化 配列を初期
関数って使っていますか?VBAには関数といって挙げられるものが、大きく分けて3つあります。VBA関数、ワークシート関数、そしてFunctionプロシージャを使って作る関数です。 この記事では、関数について関数とはなど基本的な内容から、 関数とは 冒頭でもお伝えしましたが、VBAには関数といって挙げられるものが、大きく分けて3つあります。VBA関数、ワークシート関数、そしてFunctionプロシージャを使って作る関数の3つです。 VBA関数は、Visual Basicで用意されている関数が元となっていてVBAで使う関数のことです。ワークシート関数は、Excelのワークシートのセルに数式として入力する関数のことです。 そして、VBAではFunctionプロシージャを使って、自分で関数をつくることもできます。今回はこれらの関数について、詳しく解説していきます。 ワークシート関数の使い方 VBAで
VBAでユーザーフォームはふつう、単一のオブジェクトとして扱う。 たとえば以下のようなフォームを作ったとしよう。 オブジェクト名は「frm成績」としたので、このフォームを表示させるコードはこうだ。 Sub hoge() frm成績.Show End Sub この時フォームは、「frm成績」オブジェクトとして扱われいてる。 さて、たとえばこのフォームを3つ同時に起動させたいとする。 どうすればいいか。 まずフォームのShowModalがTrueのままでは3つ同時に表示させることはできないので、これをFalseにしておく。 ShowModalとは、フォームを表示させた際にそのフォームを閉じるまで次に進めないか、それとも次のコードをそのまま実行させるかというプロパティで、FalseにするとフォームをShowしたあと閉じられるのを待たずに次のコードに進む。 そして記述するコードは次のとおり。 Su
Excel+VBAによるアプリケーションには,プログラムとデータが同じワークブック内に共存するために,運用開始後の機能追加やバグ修正の反映が難しくなるという問題があります。これを解決するために考えられるいくつかの実現方式について以下で見ていきます。 VBAコード更新プログラム 更新が必要な同じVBAコードを持つExcelアプリケーションが多数ある場合,これらをひとつずつ手動で開いて更新していくのは現実的ではありません。そこで,この作業をプログラムで行うというアプローチは当然考えられます。5. VBAコードの追加で説明している通り,VBAプログラムはVBEオブジェクトを通してVBAコードを編集することができます。そこで,フォルダを指定するとその下にあるすべてのExcelワークブックを順に開き,ターゲットのVBAコードを発見したら書き換えていくというプログラムを用意することは可能です。 ただし
ここでは、オブジェクト指向プログラミングに関して、VBAで出来ないことについて説明します(※1)。 VBAでオブジェクト指向プログラミングをするときは、設計段階でVBAで何が出来ないのかを把握しておく必要があります。 出来ないことを他の方法で回避しようとすると、ソース行数が増えたり、デバッグが面倒なことになるということを覚えて欲しいです。 (実装や単体テストに工数がかかるようになるということを覚えて欲しいです。) ----- ※1:出来ることを説明するのではなく、出来ないことを説明する理由は、GoogleやVBAのヘルプにて、出来ることを調べるのは意外と簡単なのですが、出来ないことを調べるのはとても難しいからです。 (出来ないことはヘルプに載っていないことが多く、検索条件が悪かったのかの判断が難しいためです。) 1.継承がサポートされていない VBAでは継承がサポートされていません。 ※1
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く