モジュール内のコードを操作する(CodeModule のメソッド)
CodeModule オブジェクト
モジュール内のコードの追加、削除、編集等を行う場合に使用します。
<取得>
object.CodeModule
引数・戻り値
- object ・・・ 対象となる VBComponent オブジェクトを指定します。
- object ・・・ 対象となる VBComponent オブジェクトを指定します。
CodeModule の主なメソッド
CodeModule.AddFromFile メソッド
指定したファイルの内容を対象のオブジェクト(モジュール)に追加します。
この時、モジュール内にすでにプロシージャが存在する場合は、最も上にあるプロシージャの上に挿入されます。プロシージャが含まれていない場合は、モジュールの最後に追加されます。
object.AddFromFile ( filename )
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- filename ・・・ object で指定したモジュールに追加するファイルの名前(パス含む)を表す文字列式を指定します。
CodeModule.AddFromString メソッド
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- filename ・・・ object で指定したモジュールに追加するファイルの名前(パス含む)を表す文字列式を指定します。
指定した文字列を対象のオブジェクト(モジュール)に追加します。
この時、モジュール内にすでにプロシージャが存在する場合は、最も上にあるプロシージャの上に挿入されます。プロシージャが含まれていない場合は、モジュールの最後に追加されます。
object.AddFromString ( string )
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- string ・・・ object で指定したモジュールに追加する文字列を指定します。
CodeModule.DeleteLines メソッド
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- string ・・・ object で指定したモジュールに追加する文字列を指定します。
モジュールに記載されているコードを削除します。startline に指定した行から count に指定した行数を削除します。
object.DeleteLines ( startline [, count ] )
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- startline ・・・ 削除する先頭行を長整数型(Long)の値で指定します。
- count ・・・ 削除する行数を長整数型(Long)の値を指定します。省略した場合は、1 行削除されます。
CodeModule.InsertLines メソッド
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- startline ・・・ 削除する先頭行を長整数型(Long)の値で指定します。
- count ・・・ 削除する行数を長整数型(Long)の値を指定します。省略した場合は、1 行削除されます。
指定した行に、文字列(コード)を挿入します。
object.InsertLines ( startline, code )
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- startline ・・・ 挿入する行を長整数型(Long)の値で指定します。
- code ・・・ 挿入するコードを文字列型(String)で指定します。文字列に、改行コード(キャリッジリターン、ラインフィード)を含んでいる場合は、連続した行として挿入されます。
CodeModule.ReplaceLine メソッド
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- startline ・・・ 挿入する行を長整数型(Long)の値で指定します。
- code ・・・ 挿入するコードを文字列型(String)で指定します。文字列に、改行コード(キャリッジリターン、ラインフィード)を含んでいる場合は、連続した行として挿入されます。
既存の指定した行を指定したコードに置き換えます。
object.ReplaceLine ( startline, code )
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- startline ・・・ 置換する行を長整数型(Long)の値で指定します。
- code ・・・ 置換するコードを文字列型(String)で指定します。
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- startline ・・・ 置換する行を長整数型(Long)の値で指定します。
- code ・・・ 置換するコードを文字列型(String)で指定します。
CodeModule メソッド 使用例
AddFromFile メソッド / AddFromString メソッド を使ったサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
Sub Sample_CodeModule04() 'AddFromFile メソッド 'AddFromString メソッド Dim FileName As String Dim FileCode As String Dim w As Workbook Dim stdm As Object Dim str As String FileName = "C:\Documents\test01.xlsm" FileCode = "C:\Documents\tmp\code.txt" 'ブック(test01.xlsm)をオープン Set w = Workbooks.Open(FileName) With w.VBProject.VBComponents '標準モジュール(Module1)に、code.txt の内容(sample_macro01)を追加 .Item("Module1").CodeModule.AddFromFile (FileCode) '標準モジュール(Module1)に、テキストを追加 .Item("Module1").CodeModule.AddFromString "public myValue as integer" End With '追加したマクロ(sample_macro01)を実行 Application.Run "'" & FileName & "'" & "!sample_macro01" Application.DisplayAlerts = False '保存して終了 w.Save w.Close Set w = Nothing Application.DisplayAlerts = True End Sub |
実行結果 1
「AddFromFile メソッド / AddFromString メソッド を使ったサンプル」を実行する前の test01.xlsm の Module1 の内容
code.txt の内容(sample_macro01)
「AddFromFile メソッド / AddFromString メソッド を使ったサンプル」を実行
「AddFromFile メソッド / AddFromString メソッド を使ったサンプル」を実行後の test01.xlsm の Module1 の内容
DeleteLines メソッド / ProcBodyLine プロパティ / ProcCountLines プロパティ / Lines プロパティ を使ったサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
Sub Sample_CodeModule05() '※ Sample_CodeModule04() を実行後に実行 'DeleteLines メソッド 'ProcBodyLine プロパティ 'ProcCountLines プロパティ 'Lines プロパティ Dim FileName As String Dim FileCode As String Dim w As Workbook Dim LineS As Integer Dim LineE As Integer Dim str As String FileName = "C:\Documents\test01.xlsm" FileCode = "C:\Documents\tmp\code.txt" 'ブック(test01.xlsm)をオープン Set w = Workbooks.Open(FileName) With w.VBProject.VBComponents.Item("Module1").CodeModule 'Sample_CodeModule04で追加したプロシージャ(sample_macro01)を削除 'Module1 のプロシージャ「sample_macro01」の開始行を取得 LineS = .ProcStartLine("sample_macro01", 0) 'Module1 のプロシージャ「sample_macro01」の行数を取得 LineE = .ProcCountLines("sample_macro01", 0) 'プロシージャ「sample_macro01」の内容を変数に格納 str = .LineS(LineS, LineE) 'sample_macro01 を開放(削除) .DeleteLines LineS, LineE 'Sample_CodeModule04で追加したテキスト(4行目のみ)を削除 .DeleteLines 4 End With 'sample_macro01(削除済)の内容を表示 MsgBox str Application.DisplayAlerts = False '保存して終了 w.Save w.Close Set w = Nothing Application.DisplayAlerts = True End Sub |
実行結果 2
Sample_CodeModule04() を実行後の test01.xlsm の Module1 の内容
「DeleteLines メソッド / ProcBodyLine プロパティ / ProcCountLines プロパティ / Lines プロパティ を使ったサンプル」を実行
「DeleteLines メソッド / ProcBodyLine プロパティ / ProcCountLines プロパティ / Lines プロパティ を使ったサンプル」を実行後の test01.xlsm の Module1 の内容
InsertLines メソッド / ReplaceLine メソッド を使ったサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
Sub Sample_CodeModule06() 'InsertLines メソッド 'ReplaceLine メソッド Dim FileName As String Dim w As Workbook Dim str As String FileName = "C:\Documents\test02.xlsm" 'ブック(test02.xlsm)をオープン Set w = Workbooks.Open(FileName) With w.VBProject.VBComponents.Item("Module1").CodeModule '文字列を挿入 .InsertLines 7, " str=""おはようございます。""" '文字列置換 .ReplaceLine 9, " msgbox str" 'Module1 の内容 str = .LineS(1, .CountOfLines) End With 'Module1 の内容を表示 MsgBox str Application.DisplayAlerts = False '保存して終了 w.Save w.Close Set w = Nothing Application.DisplayAlerts = True End Sub |
実行結果 3
「InsertLines メソッド / ReplaceLine メソッド を使ったサンプル」を実行する前の test01.xlsm の Module1 の内容
「InsertLines メソッド / ReplaceLine メソッド を使ったサンプル」を実行
「InsertLines メソッド / ReplaceLine メソッド を使ったサンプル」を実行後の test01.xlsm の Module1 の内容
関連記事
-
VBEを操作する(VBProject プロパティ)
VBProject プロパティ 指定されたブックの VisualBasic プロ …
-
VBEのモジュールを参照する(VBComponent オブジェクト)
VBComponent オブジェクト VBComponent オブジェクトは、V …
-
ブックにマクロが含まれているか確認(HasVBProject プロパティ)
HasVBProject プロパティ ブックにマクロが含まれているかどうかを表す …
-
VBEのモジュールを参照する(VBComponents コレクション)
VBComponents コレクション VBComponents コレクションを …
-
モジュール内のコードを操作する(CodeModule のプロパティ)
CodeModule オブジェクト モジュール内のコードの追加、削除、編集等を行 …
-
VBE をマクロで操作する時の設定(VBProject プロパティ、VBE プロパティ)
VBE をマクロで操作する時の設定について Excel 2002 以降のバージョ …