

他の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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】同じ関数なのに、エラ...
-
access テキストボックスの値取得
-
「パス名が無効です」の発生原因
-
データベースソフトのアクセス2...
-
ExcelVBAで既に開いてるwordを...
-
gccを行ってもexeファイルが生...
-
NAS上のファイルの使用中が解除...
-
VB6 Dir関数で52エラー発生
-
DisplayAlertsブロパティで ”実...
-
ウィルスセキュリティをインス...
-
ASP.NET 2.0にてアプリが動作し...
-
VB2008でListBoxで選んだ1つの...
-
ASPからACCESSのOPENどうしても...
-
「ファイルが無い」というエラー
-
「アクティブ ユーザーが多すぎ...
-
なんでGetOpenFileNameとGetSav...
-
C#でthumbnail.dbが削除できな...
-
すでにファイルが開かれている...
-
Excel VBAのApplication.Execut...
-
FFFTPアップロードエラーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【関数】同じ関数なのに、エラ...
-
access テキストボックスの値取得
-
「パス名が無効です」の発生原因
-
ExcelVBAで既に開いてるwordを...
-
NAS上のファイルの使用中が解除...
-
Returnに対するGoSubがありません
-
gccを行ってもexeファイルが生...
-
PowerShellを使って関連付けら...
-
batファイルでレジストリキーの...
-
アクセスのクエリでコンパイル...
-
VB6 Dir関数で52エラー発生
-
エクセルマクロでエラーの原因...
-
VBでファイルが開かれているか...
-
【COBOL】read文でエラー
-
FTPの送信結果を検知したい
-
VBから参照できないCのDLLを使...
-
fgets関数のEOFの扱い方について
-
ACCESS VBAでのインポート
-
データベースソフトのアクセス2...
-
DisplayAlertsブロパティで ”実...
おすすめ情報