モジュール内のコードを操作する(CodeModule のプロパティ)
CodeModule オブジェクト
モジュール内のコードの追加、削除、編集等を行う場合に使用します。
<取得>
object.CodeModule
引数・戻り値
- object ・・・ 対象となる VBComponent オブジェクトを指定します。
- object ・・・ 対象となる VBComponent オブジェクトを指定します。
CodeModule の主なプロパティ
CodeModule.CountOfLines プロパティ
object で指定したモジュール内のコードの行数を長整数型(Long)の値で取得します。
object.CountOfLines
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
CodeModule.CountOfDeclarationLines プロパティ
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
object で指定したモジュール内の宣言セクションのコードの行数を長整数型(Long)の値で取得します。
object.CountOfDeclarationLines
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
CodeModule.Lines プロパティ
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
object で指定したモジュール内で指定した部分のコードを文字列型(String)で取得します。
object.Lines ( startline [, count ] )
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- startline ・・・ 取得する先頭行を長整数型(Long)の値で指定します( 1 以上の値)。
- count ・・・ 取得する行数を長整数型(Long)の値を指定します。
CodeModule.ProcBodyLine プロパティ
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- startline ・・・ 取得する先頭行を長整数型(Long)の値で指定します( 1 以上の値)。
- count ・・・ 取得する行数を長整数型(Long)の値を指定します。
procname に指定したプロシージャの最初の行を長整数型(Long)の値で取得します。
<取得>
object.ProcBodyLine ( procname, prockind )
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- procname ・・・ プロシージャの名前を指定します。
- prockind ・・・ プロシージャの種類を表す数値(0 ~ 3)を指定します。
値
説明
0
プロパティプロシージャ以外のすべてのプロシージャ
1
プロパティに値を設定するプロシージャ
2
オブジェクトへの参照を設定するプロシージャ
3
プロパティの値を取得するプロシージャ
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- procname ・・・ プロシージャの名前を指定します。
- prockind ・・・ プロシージャの種類を表す数値(0 ~ 3)を指定します。
値 説明 0 プロパティプロシージャ以外のすべてのプロシージャ 1 プロパティに値を設定するプロシージャ 2 オブジェクトへの参照を設定するプロシージャ 3 プロパティの値を取得するプロシージャ
プロシージャの最初の行とは、Sub、Function、または Property ステートメントがある行のことです。
CodeModule.ProcCountLines プロパティ
procname に指定したプロシージャの行数を 長整数型(Long)の値で取得します。
ここでの行数は、procname の直前のプロシージャの 最終行(End Sub ステートメントや End Function などを含む行)の次の行、または、最も上にあるプロシージャの場合は、宣言セクションの次の行から指定したプロシージャの最終行までの行数で、空白行も含みます。
<取得>
object.ProcCountLines ( procname, prockind )
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- procname ・・・ プロシージャの名前を指定します。
- prockind ・・・ プロシージャの種類を表す数値(0 ~ 3)を指定します。
値
説明
0
プロパティプロシージャ以外のすべてのプロシージャ
1
プロパティに値を設定するプロシージャ
2
オブジェクトへの参照を設定するプロシージャ
3
プロパティの値を取得するプロシージャ
CodeModule.ProcStartLine プロパティ
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- procname ・・・ プロシージャの名前を指定します。
- prockind ・・・ プロシージャの種類を表す数値(0 ~ 3)を指定します。
値 説明 0 プロパティプロシージャ以外のすべてのプロシージャ 1 プロパティに値を設定するプロシージャ 2 オブジェクトへの参照を設定するプロシージャ 3 プロパティの値を取得するプロシージャ
procname に指定したプロシージャの開始行を長整数型(Long)の値で取得します。
<取得>
object.ProcStartLines ( procname, prockind )
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- procname ・・・ プロシージャの名前を指定します。
- prockind ・・・ プロシージャの種類を表す数値(0 ~ 3)を指定します。
値
説明
0
プロパティプロシージャ以外のすべてのプロシージャ
1
プロパティに値を設定するプロシージャ
2
オブジェクトへの参照を設定するプロシージャ
3
プロパティの値を取得するプロシージャ
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- procname ・・・ プロシージャの名前を指定します。
- prockind ・・・ プロシージャの種類を表す数値(0 ~ 3)を指定します。
値 説明 0 プロパティプロシージャ以外のすべてのプロシージャ 1 プロパティに値を設定するプロシージャ 2 オブジェクトへの参照を設定するプロシージャ 3 プロパティの値を取得するプロシージャ
ここでのプロシージャの開始行とは、procname の直前のプロシージャの 最終行(End Sub ステートメントや End Function などを含む行)の次の行、または、最も上にあるプロシージャの場合は、宣言セクションの次の行を指します。
CodeModule.ProcOfLine プロパティ
指定された行が属しているプロシージャ名を取得します。
<取得>
object.ProcOfLine ( line, prockind )
引数・戻り値
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- line ・・・ 調べる行を長整数型(Long)の値で指定します。
- prockind ・・・ プロシージャの種類を表す数値(0 ~ 3)を指定します。
- object ・・・ 対象となる CodeModule オブジェクトを指定します。
- line ・・・ 調べる行を長整数型(Long)の値で指定します。
- prockind ・・・ プロシージャの種類を表す数値(0 ~ 3)を指定します。
プロシージャ宣言の前にある空白行やコメント行はプロシージャに含まれます。最後にあるプロシージャの場合は、プロシージャの後にある空白行もプロシージャに含まれます。
CodeModule のプロパティ 使用例
CountOfLines プロパティ / CountOfDeclarationLines プロパティ / 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 |
Sub Sample_CodeModule01() 'CountOfDeclarationLines プロパティ 'CountOfLines プロパティ 'Lines プロパティ Dim FileName As String Dim w As Workbook Dim strDec As String Dim strAll As String FileName = "C:\Documents\test01.xlsm" 'ブック(test01.xlsm)をオープン Set w = Workbooks.Open(FileName) '標準モジュール(Module1) With w.VBProject.VBComponents.Item("Module1").CodeModule '宣言部分のコードを取得 strDec = .LineS(1, .CountOfDeclarationLines) & vbCrLf 'Module1 のコードすべてを取得 strAll = .LineS(1, .CountOfLines) 'strDec、strAll を表示 MsgBox "<<宣言部分のみ(" & .CountOfDeclarationLines & "行)>>" & vbCrLf & _ strDec & vbCrLf & _ "<<Module1 すべて(" & .CountOfLines & "行)>>" & vbCrLf & _ strAll End With '終了 w.Saved = True w.Close Set w = Nothing End Sub |
実行結果 1
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 |
Sub Sample_CodeModule02() '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 '標準モジュール(Module1)に、code.txt の内容(sample_macro01)を追加 .AddFromFile (FileCode) 'Module1 のプロシージャ「sample_macro01」の開始行を取得 LineS = .ProcStartLine("sample_macro01", 0) 'Module1 のプロシージャ「sample_macro01」の行数を取得 LineE = .ProcCountLines("sample_macro01", 0) 'プロシージャ「sample_macro01」の内容 str = .LineS(LineS, LineE) End With 'プロシージャ「sample_macro01」の内容を表示 MsgBox str '終了 w.Saved = True w.Close Set w = Nothing End Sub |
実行結果 2
ProcOfLine プロパティ を使ったサンプル
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 |
Sub Sample_CodeModule03() 'ProcOfLine プロパティ Dim w As Workbook Dim str As String Dim pname As String Dim i As Integer Set w = ThisWorkbook 'Module2 内にあるすべてのプロシージャの名前を取得 With w.VBProject.VBComponents.Item("Module2").CodeModule For i = 1 To .CountOfLines If pname <> .ProcOfLine(i, 0) Then pname = .ProcOfLine(i, 0) str = str & pname & vbCrLf End If Next i End With '表示 MsgBox str End Sub |
実行結果 3
関連記事
-
ブックにマクロが含まれているか確認(HasVBProject プロパティ)
HasVBProject プロパティ ブックにマクロが含まれているかどうかを表す …
-
VBEのモジュールを参照する(VBComponent オブジェクト)
VBComponent オブジェクト VBComponent オブジェクトは、V …
-
VBEのモジュールを参照する(VBComponents コレクション)
VBComponents コレクション VBComponents コレクションを …
-
VBEを操作する(VBProject プロパティ)
VBProject プロパティ 指定されたブックの VisualBasic プロ …
-
VBE をマクロで操作する時の設定(VBProject プロパティ、VBE プロパティ)
VBE をマクロで操作する時の設定について Excel 2002 以降のバージョ …
-
モジュール内のコードを操作する(CodeModule のメソッド)
CodeModule オブジェクト モジュール内のコードの追加、削除、編集等を行 …