質問

2008年07月10日 12時53分
  • マクロを含むOfficeファイルのリストアップは可能でしょうか。

情シスのオープンナレッジ『Syszo』サービス終了のお知らせ

質問

うちではいまだにOffice2000を利用しているのですが、思い切ってOffice2003に切り替えようかと思っています。
そこで問題なのがOffice2000で作ったマクロを含むデータやAccessファイルです。
Office2003にしてしまうとうまく動かなくなってしまうものも出てくるだろうし、出来れば事前にファイルサーバに置いてあるだろうそれらの対象データの情報を抽出できれば利用者に案内できるかな…と思いました。

マクロを含むデータのリストアップが出来るようなツールがあればお教えいただけないでしょうか。。

自分なりに調べてみたのですが、下記のような手段しか見当たらず…。

>エクセルのファイル
xlsファイルはバイナリで保存されているため
普通のテキスト検索では無理。

マクロ付きのxlsファイルを覗いてみると
moduleとかVBAProjectといった文字列あり。

バイナリファイル内を検索できるソフトで↑の文字列を検索

お力をお貸しいただきたく、
なにとぞよろしくお願い申し上げます。

1件の回答があります

回答

こんにちはです。

マクロを含むデータのリストアップが出来るようなツールがあればお教えいただけないでしょうか。。
要するに、「マクロを含むExcelを抽出」って事ですよね。
以前にExcelVBAを自動変換するプログラムを作成した事がありますので
掲示させていただきます。
VB6ですが、対象Excelにマクロを含んでいるかを判別してくれます。
Private Sub Command1_Click()
Dim Flg As Boolean
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim ModuleNo As Integer
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open("ファイル名.xls") ’オープンするファイル名
Flg = False

For ModuleNo = 1 To xlBook.VBProject.VBComponents.Count
With xlBook.VBProject.VBComponents.Item(ModuleNo)
If .Type = 1 Or .Type = 3 Then ’フォームかモジュールなら
Flg = True: Exit For
End If
End With
Next ModuleNo
If Flg Then
MsgBox "マクロを含んでいます。"
Else
MsgBox "マクロを含んでいません"
End If
End Sub
ご参考までにどうぞ!
ちなみに「参照設定」にて「Microsoft Excel * Object Library」にチェックを入れておいてください。

あなたもコメントしましょう!