dポイントプレゼントキャンペーン実施中!

いつも楽しく勉強させていただいております。
今度、Access(2000)の大量のクエリとマクロでできているシステムをリライトすることになりました。
mdbファイルの数は数千、それぞれ数百のクエリとマクロから成り立っています。VBAはほとんど使っていません。システム部に頼らずにに各ユーザー(非システム系)が自分で使うツール的なものを作っていった結果こうなりました。もちろん使われていないシステムが多いですが、もはやどれが生きているのかすら誰も把握できていない状態ですので、少しずつ統合していこうということになりました。

問題は、あまりに数が多いのでマクロもクエリもいちいちデザインビューで開いて読んでいると訳がわからなくなることです。

下記は同僚にもらったコードですが、mdbファイル内のクエリの内容(SQL文)をテキストファイルに書き出します。これが結構役に立ってくれます。

Sub b()
Dim fs As Object, a As Object
Dim db As Database
Dim qdf As QueryDef

Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\hoge.txt", True)
Set db = CurrentDb

For Each qdf In db.QueryDefs
a.WriteLine qdf.Name
a.WriteLine qdf.SQL
Next
a.Close

End Sub

私が知りたいのは、これを応用してマクロの中身を出力する方法です。
おそらく、

Dim qdf As QueryDef



qdf.SQL

あたりを変更すると可能なのじゃないかと・・・。
どなたかご存知でしたら、教えてください。

A 回答 (2件)

この回答への補足

リンク先を参考に、何とか動くものができました。
解析したいAccessのモジュール内に置いて使えます。

Sub b()

Set cntscripts = CurrentDb.Containers("scripts")

For i = 0 To CurrentDb.Containers("scripts").Documents.Count - 1
DocName = CurrentDb.Containers("scripts").Documents(i).Name
filename = CurrentDb.Containers("Scripts").Documents(i).Name
SaveAsText acMacro, filename, "c:\tmp\M_" & filename & ".txt"
Next i

End Sub

補足日時:2009/10/06 15:10
    • good
    • 0
この回答へのお礼

cistronezkさま

回答ありがとうございます。リンク先を参考にプログラムを書いてみましたが、うまく動いてくれません。
(ちなみにこれはAccessではなくて、Excelマクロに書くんですよね?)

objAccess.OpenCurrentDatabase "C:\sample.mdb.mdb"までは何とか動いているようです。
(ウォッチウィンドウで変数objAccessをのぞくといろいろ設定されているから)。

その次の

objAccess.CurrentDb.Containers("Scripts").Documents.Count

で実行時エラー430(クラスはオートメーションまたは予測したインターフェースをサポートしていません)で落ちます。
何が悪いのでしょうか。
ExcelもAccessも2000で、Excel側でMicrosoft Access 9.0 Object Libraryを追加したのですが。

Sub a()
Dim obj As Object
Dim i As Long
Dim obj_mdl As Access.Module

'Access起動
Dim objAccess As New Access.Application

objAccess.OpenCurrentDatabase "C:\sample.mdb.mdb"

'On Error Resume Next
For i = 0 To objAccess.CurrentDb.Containers("Scripts").Documents.Count - 1
filenamex = objAccess.CurrentDb.Containers("Scripts").Documents(i).Name
objAccess.Application.SaveAsText acMacro, filenamex, "c:\aaa\M_" & filenamex & ".txt"
Next i

End Sub

お礼日時:2009/10/06 13:34

ACCESS 仕様書 ツール



こんな感じのキーワードを使って Google で検索してみて。
目的にあうものがあればいいけど。

この回答への補足

KenKen_SPさま、お礼に補足させていただきます。

解析ツール、フリーのものもありました!

↓でダウンロードできました。

http://www.vector.co.jp/download/file/win95/busi …

すごくきれいに出力されるので感激です。

しかしながら、やはりマクロの命令文を取り出すプログラムがあればいろいろ便利な気がするので、この質問はしばらく閉めないでおきます。

補足日時:2009/10/06 14:33
    • good
    • 0
この回答へのお礼

KenKen_SPさま、回答ありがとうございます。

ちょっと検索してみたのですが、Accessの解析ツールとなるとどれも有償みたいですね。将来的にはそういうものの購入も考えられますが、まだ仕事に取り掛かる前の段階で、予算の申請をするのはも少し後になってしまいます。

クエリのSQLプロパティを取り出すみたいに、自分で簡単にできないものでしょうか。

お礼日時:2009/10/06 13:41

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