プロが教える店舗&オフィスのセキュリティ対策術

Excell2003で作っていた多量のExcelファイルを、Excel2010で動かす事が必要になってきました。

で、指定フォルダにある複数のExcelファイルが、マクロを含んでいるかどうかを調べたいのです。
加えて、マクロを含んだExcelファイルのファイル名をリストアップしたいのですが、
どの様にしたら良いでしょうか?

適切なマクロなりともご教授いただきたく、よろしくお願いします。

A 回答 (1件)

Excel 2007 または 2010 から実行するならば以下のような感じか。


調べたい対象ファイルの Workbook オブジェクトの HasVBProject プロパティが True なら VBA コードを含んでいるということになる。

Sub hoge()
 ' VBA を含むファイルのファイル名出力行番号
 Dim rowIdx As Long
 rowIdx = 1

 ' これから開くファイルの VBA を無効にする
 Application.AutomationSecurity = msoAutomationSecurityForceDisable

 Dim fso As Scripting.FileSystemObject
 Set fso = New Scripting.FileSystemObject

 Dim bk As Workbook
 Dim f As Scripting.File
 For Each f In fso.GetFolder("D:\test\").Files
  ' xls ファイルを開いていく
  If fso.GetExtensionName(f.Name) = "xls" Then
   Set bk = Workbooks.Open(f.Path)

   ' VBA を含んでいればファイル名を書き出す
   If bk.HasVBProject Then
    ThisWorkbook.Worksheets(1).Cells(rowIdx, 1).Value = bk.Name
    rowIdx = rowIdx + 1
   End If

   bk.Close
  End If
 Next

 ' VBA に対するセキュリティを元に戻す
 Application.AutomationSecurity = msoAutomationSecurityLow
End Sub
    • good
    • 0
この回答へのお礼

有り難うございます。これで試してみます。

お礼日時:2013/06/20 09:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!