39 | モジュールから特定の文字列のある行をリストアップする | ||
1つのモジュールのコードを「CodeModule」オブジェクトとして取り出し、「Lines」プロパティで各行のコードを取り出すループにおいて、取り出した1行内を文字列処理で検索することによって、特定の文字列を持っている行だけをリストアップすることができます。 たとえば特定のテーブルやクエリ名が記述されているコード、あるいは特定のプロシージャ呼び出しを行っているコードがどのモジュールのどの行にあるかといったことを調べることができます。 下記プログラムでは、「InStr」関数を使って、いずれかの位置に"Control"という文字を含む行だけをリストアップしてイミディエイトウィンドウに出力しています。 プログラム
Sub SampleCode_39() 'モジュールから特定の文字列のある行をリストアップする Dim vbcmp As Object Dim intRow As Integer Dim strCode As String Dim strSearch As String '検索する文字列を設定 strSearch = "Control" 'VBEのすべてのモジュールのループ For Each vbcmp In VBE.ActiveVBProject.VBComponents With vbcmp '1モジュール内のすべてのコードを取り出すループ For intRow = 1 To .CodeModule.CountOfLines strCode = .CodeModule.Lines(intRow, 1) If InStr(strCode, strSearch) > 0 Then '検索文字列が含まれていたらイミディエイトウィンドウに出力 Debug.Print .Name & "(" & intRow & "): " & strCode End If Next intRow End With Next vbcmp End Sub 実行例
■実行後 |
|||
|
Copyright © T'sWare All rights reserved |