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

実行例
■実行後
| Index | Prev | Next |



Copyright © T'sWare All rights reserved