他の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ランキング
-
batファイルでレジストリキーの...
-
FatFsでのエラーについて
-
ワークブックに名前をつけて保...
-
RAR圧縮ファイル(分割)の順番が...
-
gccを行ってもexeファイルが生...
-
Returnに対するGoSubがありません
-
エクセルファイルが開けない
-
freadでデータがない場合の読込...
-
エクセル「これ以上新しいフォ...
-
助けて下さい。Outlook2007でエ...
-
CSVファイルが開かれているかど...
-
fgets関数のEOFの扱い方について
-
他のmdbファイルのform,macro,r...
-
「パス名が無効です」の発生原因
-
メインダイアログを表示させず...
-
DisplayAlertsブロパティで ”実...
-
アクセスのクエリでコンパイル...
-
csvファイルをvbaで読み...
-
ファイル アクセス権のエラーの...
-
「複数の選択範囲に対して実行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBでファイルが開かれているか...
-
batファイルでレジストリキーの...
-
Returnに対するGoSubがありません
-
VBから参照できないCのDLLを使...
-
「パス名が無効です」の発生原因
-
access テキストボックスの値取得
-
アクセスのクエリでコンパイル...
-
PowerShellを使って関連付けら...
-
freadでデータがない場合の読込...
-
【COBOL】read文でエラー
-
gccを行ってもexeファイルが生...
-
ファイルクローズ(fclose)でエ...
-
VB6 Dir関数で52エラー発生
-
ACCESS VBAでのインポート
-
NAS上のファイルの使用中が解除...
-
FTPの送信結果を検知したい
-
エクセルマクロでエラーの原因...
-
Access2013にてドラッグ&ドロ...
-
EXCELのVBAでWORDが開いてある...
-
fcloseで発生するエラーについて。
おすすめ情報