マクロを含むワークブックの検索(Microsoft Excel)
リチャードの会社は、他の多くの会社と同様に、Excelをかなり使用しています。実際、彼らは何千年にもわたって収集した何千ものExcelワークブックを持っています。リチャードは、各ワークブックを個別に開いて検査する必要なしに、それらのワークブックのどれにVBAマクロが含まれているかを見つける方法を必要としています。彼はこれを行う簡単な方法があるかどうか疑問に思います。
マクロを含むすべてのワークブックを見つけるためのかなり単純な方法の1つは、XLSMまたはXLSB拡張子を使用するファイルを探すことです。
マクロを含むブックは、これらの拡張子を使用してファイルに保存する必要があります。 100%絶対確実というわけではありませんが、開始するのに適した場所です。
Windows(Excel以外)の検索機能を使用することもできます
「EndSub」または「EndFunction」というテキストを含むファイルを検索します。 VBAプロシージャでは、最後にこれら2つのステートメントのいずれかを使用する必要があるため、これにより、潜在的な候補ワークブックがすばやく特定されます。
レガシーワークブック(Excel 2003のファイル形式を使用して開発されたもの)を使用している場合は、実際に各ワークブックの内部を調べる必要があります。これはプログラムで実行できます。つまり、フォルダー内の各ブックを開き、その中にマクロがあるかどうかを調べるマクロを作成できます。
例として、ディレクトリ内の各ファイルをステップスルーし、ファイルがExcelブックであるかどうかを判断するマクロを作成できます。次に、ファイルを開いて、VBAプロジェクトが含まれているかどうかを確認できます。
Sub FindMacros() Dim sPath As String Dim sFile As String Dim sFoundFiles As String 'specify directory to use - must end in "\" sPath = "C:\MyData\Excel Data\" sFile = Dir(sPath) Do While sFile <> "" If InStr(sFile, ".xls") > 0 Then Workbooks.Open (sPath & sFile) If Workbooks(sFile).HasVBProject Then sFoundFiles = sFoundFiles & sFile & vbCrLf End If Workbooks(sFile).Close (False) End If sFile = Dir ' Get next filename Loop If Len(sFoundFiles) = 0 Then MsgBox "No workbooks found that contain macros" Else sFoundFiles = "The following workbooks contain macros:" & _ vbCrLf & vbCrLf & sFoundFiles MsgBox sFoundFiles End If End Sub
この例では、HasVBProjectプロパティ(Excel 2007のExcelオブジェクトモデルに導入されています)を使用して、ファイルにマクロがあるかどうかを判断します。完了すると、マクロは、マクロを含むワークシートを一覧表示するメッセージボックスを表示します。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(12466)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。
Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります:
linkマクロを含むワークブックの検索。