- - PR -
Accessのマクロのコードを取り出す方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-07-30 16:36
お世話になります。
複数あるAccessアプリのサポートのため、エクセルからmdbファイルのコードを取り出すツールを作ろうとしています。(Office2003を使用しています。) Accessの標準モジュールは取り出せたのですが、マクロとクエリのコードを取り出す方法がわかりません。 ご存知の方はご教示お願いできないでしょうか。 標準モジュールは、下記の通りで取り出せました。 Dim obj As Object Dim i As Long Dim obj_mdl As Access.Module 'Access起動 Dim objAccess As New Access.Application objAccess.OpenCurrentDatabase MDB_DB, True, "" On Error Resume Next For Each obj In objAccess.CurrentProject.AllModules 'エクセルシートに書込み Sheets("MDB_FUNC").Cells(line, 1) = obj.name objAccess.DoCmd.OpenModule obj.name Set obj_mdl = objAccess.Modules(obj.name) For i = 1 To obj_mdl.CountOfLines 'コード Sheets("MDB_FUNC").Cells(line, 3) = obj_mdl.Lines(i, 1) '標準モジュールの関数名 Sheets("MDB_FUNC").Cells(line, 4) = obj_mdl.ProcOfLine(i, vbext_pk_Proc) line = line + 1 Next i objAccess.DoCmd.Close acModule, obj.name line = line + 1 Next obj objAccess.CloseCurrentDatabase Set objAccess = Nothing 宜しくお願いいたします。 |
|
投稿日時: 2007-07-31 14:34
自己レスです。
時間が無い事もあって、諦めてテキスト文に吐き出す方法が載っていたので、これで回避することにしました。 マクロ: 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 クエリ: 'クエリをファイル化 For i = 0 To objAccess.CurrentDb.QueryDefs.Count - 1 filenamex = objAccess.CurrentDb.QueryDefs(i).name objAccess.Application.SaveAsText acQuery, filenamex, "c:\aaa\Q_" & filenamex & ".txt" Next i ※但し、クエリは、SQL文にならないので見づらい。 SQL文で吐き出す方法があれば引き続きお願いします。 |
|
投稿日時: 2007-08-02 15:02
自己レス2
>※但し、クエリは、SQL文にならないので見づらい。 >SQL文で吐き出す方法があれば引き続きお願いします DAOを使えばSQL文のプロパティがあり、無事解決しました。 おじゃましました。 [ メッセージ編集済み 編集者: るろうのタミー 編集日時 2007-08-02 15:03 ] |
1