他のmdbファイルのform,macro,reportsをテキスト化したい。
asSaveTextを使って、mdbファイルのみが格納されている"C:\testA"フォルダにある全てのmdbファイルに対して、macro,form,reports等のvbeのソースコードを"C:\testB"にテキストファイルとして自動出力してくれるツールを作成したいのですが、エラーで止まってしまいます。何が悪いのかご教授下さいませんでしょうか。
下記のマクロがあるのは、"C:\testA""C:\testB"でもない場所にある適当なmdbファイルの標準モジュールです。
以下は、サンプルソースです。よろしくお願いしますm(--)m
Option Compare Database
Public Sub Output()
Dim db As Database
Dim souce As Container
Dim InPutPass As String
Dim OutPutPass As String
Dim FileName As String
Dim FilePass As String
Dim objAccess
Const cnsDIR = "\*.*"
InPutPass = "C:\testA"
OutPutPass = "C:\testB"
FileName = Dir(InPutPass & cnsDIR, vbNormal)
Do While FileName <> ""
'開くファイルのパスを設定
FilePass = InPutPass & "\" & FileName
'Accessオブジェクトを作成します
Set appAccess = CreateObject("Access.Application")
'MDBファイルを開きます
appAccess.OpenCurrentDatabase (FilePass)
'macroをテキスト化する
Set souce = appAccess.Containers("Scripts")
For Each d In souce.Documents
If Left(d.Name, 1) <> "~" Then
Application.SaveAsText acMacro, d.Name, OutPutPass & "\Macro_" & d.Name & ".txt"
End If
Next d
'Formをテキスト化する
Set souce = db.Containers("Forms")
For Each d In souce.Documents
If Left(d.Name, 1) <> "~" Then
Application.SaveAsText acForm, d.Name, OutPutPass & "\Form_" & d.Name & ".txt"
End If
Next d
'Reportをテキスト化する
Set souce = db.Containers("Reports")
For Each d In souce.Documents
If Left(d.Name, 1) <> "~" Then
Application.SaveAsText acReport, d.Name, OutPutPass & "\Reports_" & d.Name & ".txt"
End If
Next d
'MDBファイルを閉じます
appAccess.CloseCurrentDatabase
'Accessオブジェクトの破棄
Set appAccess = Nothing
'次のファイル名を取得
FileName = Dir()
Loop
End Sub
補足
会社でaccessVBAをコーディングしているんですが、エラー内容を控えるのを忘れてしまいました。 上記のソースを一度忘れて頂いて、本当にやりたい事だけを書くと a.mdbとb.mdbの2つのファイルがあったとして、 a.mdbの標準モジュールにソースAを書いて、それを実行すると b.mdb内に記述されているVBAソース(macro,form,report)を テキスト化して任意の場所に出力してくれるというソースAを作りたいのです。 実現方法はある程度分かっていて、"saveastext"を使えば良いと 思うのですが、他のmdbファイルの情報を"saveastext"を 使って出力させる方法が分からないのです。 仕事で使いたくて、とても困っています。 どうすれば良いのか教えて頂けないでしょうか。