

他の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
No.3ベストアンサー
- 回答日時:
よく見たら、
appAccess
も変数宣言されていません。この場合は
たぶん、
Dim appAccess As Access.Application
にでもなるのかと思いますが。
それで、エラー番号とエラー内容は?
この回答への補足
会社でaccessVBAをコーディングしているんですが、エラー内容を控えるのを忘れてしまいました。
上記のソースを一度忘れて頂いて、本当にやりたい事だけを書くと
a.mdbとb.mdbの2つのファイルがあったとして、
a.mdbの標準モジュールにソースAを書いて、それを実行すると
b.mdb内に記述されているVBAソース(macro,form,report)を
テキスト化して任意の場所に出力してくれるというソースAを作りたいのです。
実現方法はある程度分かっていて、"saveastext"を使えば良いと
思うのですが、他のmdbファイルの情報を"saveastext"を
使って出力させる方法が分からないのです。
仕事で使いたくて、とても困っています。
どうすれば良いのか教えて頂けないでしょうか。
No.4
- 回答日時:
ほかファイルにあるからエラーでダメ、ならばインポートさせてからと思います。
参考
mdb同士のコンペアツールをmdbで作ってあるのを社内システムでみたことありますがそのときはファイルをダイアログで選んで比較オブジェクトも選んで実行でした。このコマンドも使われてました。アクセスがもっている隠しテーブルも使用。
No.1
- 回答日時:
>For Each d In souce.Documents
まず、ここでdは変数宣言されていない。
Dim d As Document
エラーの番号と内容がわからないと
何ともいえません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
access テキストボックスの値取得
-
「パス名が無効です」の発生原因
-
【COBOL】read文でエラー
-
VBから参照できないCのDLLを使...
-
エクセルで質問です。 ハイパー...
-
CSVファイルが開かれているかど...
-
アクセスのクエリでコンパイル...
-
RAR圧縮ファイル(分割)の順番が...
-
VISIOは上位互換のはずなのにフ...
-
NAS上のファイルの使用中が解除...
-
Access2010 コンパイルエラー...
-
ADOXでmdbファイルにオートナン...
-
Access2013にてドラッグ&ドロ...
-
ファイルクローズ(fclose)でエ...
-
FORTRANの実行エラーについて
-
すでにファイルが開かれている...
-
freadでデータがない場合の読込...
-
アクセスでイベントのロジック...
-
VB実行時エラー75:「パス名が...
-
C++Builder Ver6.0でエラーが発生
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで質問です。 ハイパー...
-
Excel 2003 のエラーメッセージ
-
「パス名が無効です」の発生原因
-
PowerShellを使って関連付けら...
-
access テキストボックスの値取得
-
【COBOL】read文でエラー
-
アクセスのクエリでコンパイル...
-
Returnに対するGoSubがありません
-
batファイルでレジストリキーの...
-
VBから参照できないCのDLLを使...
-
NAS上のファイルの使用中が解除...
-
データベースソフトのアクセス2...
-
VB6 Dir関数で52エラー発生
-
【関数】同じ関数なのに、エラ...
-
gccを行ってもexeファイルが生...
-
FORTRANの実行エラーについて
-
FTPの送信結果を検知したい
-
fgets関数のEOFの扱い方について
-
ASP.NET 2.0にてアプリが動作し...
-
VBでファイルが開かれているか...
おすすめ情報