Access VBAコードのテキスト出力方法

このQ&Aのポイント
  • AccessのVBAコードをテキストに出力する方法についてご質問いただきました。
  • 参照設定で[Microsoft Visual Basic Application Extensibility]をチェックし、VBAプロジェクト内のすべてのモジュールをイミディエイトウインドウに出力する方法を紹介します。
  • コード内にDebug.Print文を使用することで、コードの内容をイミディエイトウインドウに出力することができます。
回答を見る
  • ベストアンサー

イミディエイトウインドウに吐き出すには

参照設定で[Microsoft Visual Basic Application Extensibility]をチェック Sub subExportAllModuleforAccess() Dim vbcComp As VBIDE.VBComponent For Each vbcComp In Application.VBE.ActiveVBProject.VBComponents Debug.Print vbcComp.Name, vbcComp.Type vbcComp.Export ("C: \test.txt") Next vbcComp End Sub このコードで、コードの中身をテキストに吐き出すのではなく Debug.Printでイミディエイトウインドウに吐き出すには どうすれば良いでしょうか? アクセス2010です。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

回答No.1です。こちらから追加補足します。 ご要望に対する答えとしては、No.1で提示した内容を 応用して貰えれば十分と考えていますが、 イミディエイトウインドウに表示可能な行数は、 200(最後に改行が付加されるので実質199)ですので、 不足が出る場合が多いでしょうから、 目的に適うように (例えば、Exportの代りに、普通にテキスト出力するとか、フォームを使うとか) 必要に応じて設計を見直してあげて下さいませ。

SRJGIRGF
質問者

お礼

ありがとうございました。

その他の回答 (1)

回答No.1

こんにちは。 Sub subExportAllModuleforAccess() Dim vbcComp As VBIDE.VBComponent   For Each vbcComp In Application.VBE.ActiveVBProject.VBComponents     Debug.Print "<<"; vbcComp.Name, vbcComp.Type     Debug.Print vbcComp.CodeModule.Lines(1, vbcComp.CodeModule.CountOfLines)   Next vbcComp End Sub のような感じ。

SRJGIRGF
質問者

お礼

ありがとうございました。

関連するQ&A

  • LocationNameを取得するとアウトルックが

    エクセルvba2010です。よろしくお願いします。 Sub Sample() Dim ie As Object For Each ie In CreateObject("Shell.Application").Windows() Debug.Print ie.LocationName Next End Sub このコードで、現在開いているURL名を取得すると、 アウトルックを立ち上げてると outlook:%26%2321463・・・ と言うのが取得されるのですが、これは何のパスでしょうか? メールは立ち上げていません。

  • これは実行中のVBEコードのイミディエイトウイント

    Sub Sample() Dim WD, task, n As Long Set WD = CreateObject("Word.Application") 'Wordを起動します For Each task In WD.Tasks 'Word VBAのTasks'コレクションを調べます If task.Visible = True Then ' タスク(プロセス)が実行中だったら Debug.Print task.Name ' タスクの名前を書き出します End If Next WD.Quit Set WD = Nothing End Sub これを実行すると 結果に イミディエイト も含まれるのですが、 これは実行中のVBEコードのイミディエイトウインドウのことを言っているのでしょうか?

  • 過去レス「マクロでモジュール解放を記述出来るか」

    '08.1.15のご質問No.3682185「マクロでモジュール解放を記述出来るか?」 のご回答が以下でした。 -------- まず Excelのマクロのセキュリティ設定で『信頼できる発行元』タブにある『Visual Basic プロジェクトへのアクセス』にチェックを入れておきます VBEで参照設定に『Microsoft Visual Basic for Application Extensibility 5.3』を追加します これでモジュールに対するアクセスができるようになります 実際のアクセス方法ですが Dim oVBE as VBE, oPrj as VBProject, oComp as VBComponent ' oCompがモジュールになります Set oVBE = Me.Application.VBE Set oPrj = oVBE.VBPrjects("VBAProject") for each oComp in oPrj.VBComponents   if oComp.Name = "開放したいモジュール名" then     oPrj.VBComponents.Remove oComp   end if next といった具合になります 【ここから質問です】 私のはエクセル2000ですが、上記をやると、 「コンパイルエラー:Meキーワードの使用方法が不正です」と出ます。 どこを直せば動くようになりますか?

  • excel VBA コピーファイルのマクロ削除

    下記3つの、プロシージャを組み合わせて、下記のやりたいことをやりたいのですが、うまくいきません。 どうかご教授の程よろしくお願いいたします。 excelは2000です。 ○やりたいこと 今現在開いているファイルの、コピーをデスクトップに保存して、その保存したブックのマクロ(標準モジュールと、コマンドボタン)を削除したい。 ○自分でやろうとすると コピーをデスクトップに保存すると、コピー元のファイルが勝手に閉じてしまい、コピー先のファイルのマクロを削除できない。 '■デスクトップにコピー保存 Sub copysave() Dim 場所 As String 場所 = CreateObject("WScript.Shell").SpecialFolders("Desktop") ActiveWorkbook.SaveAs Filename:=場所 & "\" & Format(Date, "yyyymmdd") & "○◆△.xls" End Sub '■標準モジュールの削除 Sub DelModule() Application.VBE.ActiveVBProject.VBComponents.Remove _   Application.VBE.ActiveVBProject.VBComponents("Module1") Application.VBE.ActiveVBProject.VBComponents.Remove _   Application.VBE.ActiveVBProject.VBComponents("Module2") End Sub '■CommandButtonの削除 Sub DelCommandButton() Dim c As Excel.OLEObject For Each c In Worksheets(1).OLEObjects   If TypeOf c.Object Is Msforms.CommandButton Then c.Delete End If Next End Sub

  • Referencesの参照設定

    http://www.tsware.jp/tips/tips_565.htm を参考に、 VBAで参照設定されているライブラリの一覧を取得したいのですが、 Sub t() Dim Ref As Reference For Each Ref In References With Ref Debug.Print .Name Debug.Print .FullPath Debug.Print .GUID Debug.Print .Major Debug.Print .Minor Debug.Print .IsBroken End With Next Ref End Sub を実行すると、 Ref As Reference の部分で、コンパイルエラー(ユーザー定義型は定義されていません) になります。 多分、Referencesの参照設定をしないと、このコードは使えないからだと思うのですが、 参照設定にどこにチェックをすればいいでしょうか?

  • どちらを使った方がいいでしょうか?

    Sub test1() Dim ws As Worksheet For Each ws In Worksheets Debug.Print ws.Name Next End Sub Sub test2() Dim ws As Variant For Each ws In Worksheets Debug.Print ws.Name Next End Sub どちらも問題なく実行されますが、 VBA的にどちらを使った方がいいでしょうか?

  • フォーム1が開いているのならMsgBoxを表示

    Sub マクロ() If フォーム1が開いているのなら Then MsgBox "フォーム1は開いています" End If End Sub アクセスで上記の事をやりたいのですが、コードを教えていただけますか? Sub test() Dim myForm As Form For Each myForm In Forms Debug.Print myForm.Name Next End Sub で、フォームをループできるのですが、いちいちループさせずに、フォーム1だけをつかんで、 起動している(開いている)ならメッセージボックスを表示させたいです。

  • 一回のループで次のオブジェクトの値も同時に取得する

    一回のループで次のオブジェクトの値も同時に取得するにはどのようなコードを書けばよいですか? 例えば、 ブックにシートが Sheet1 Sheet2 Sheet3 あり、 Sub Sample1() Dim s As Worksheet For Each s In Worksheets Debug.Print s.Name Next End Sub のように、全てのシート名を取得する場合、 Sheet1とSheet2を1回のループで同時に取得する方法はありますか? Sub Sample1() Dim s As Worksheet For Each s In Worksheets Debug.Print s.Name   Debug.Print s+1.Name Next End Sub みたいな方法があるのか知りたいです。 よろしくお願いします。

  • 現在開いてるIEのタイトルを取得するには?

    Sub test() Dim shl As Object Dim wnd As Object Set shl = CreateObject("Shell.Application") For Each wnd In shl.Windows() Debug.Print wnd.LocationURL Next Set shl = Nothing End Sub ----------------------------------------- これを実行するとIEのURLは取得できますが 画像のようにタイトル部分の文字列を取得したいです。 LocationURLをLocationnameに変えたらエラーになりました。 ご教授よろしくお願いします。

  • 全てのサブフォーム名を取得したい

    オフィス2007です。 Sub test() Dim obj As AccessObject For Each obj In CurrentProject.AllForms Debug.Print obj.Name Next End Sub --------------------------------- 上記のコードでデータベースのすべてのフォーム名は取得できますが フォーム1に乗っかっている複数のサブフォームを取得するにはどうすればいいのでしょうか? サブフォームに独自の名前を付けて、IFステートメントを使うしかないですか?

専門家に質問してみよう