#642 | すべてのモジュールをテキストファイルにエクスポートする方法 | VBA | ||||
AccessのDoCmdオブジェクトのいくつかのメソッドを使うと、テーブルやクエリのデータをExcelやCSV形式で外部にエクスポートしたり、フォーム等のオブジェクトを別のAccessのデータベースにエクスポートしたりすることができます。 しかしこのとき、標準モジュールを他のデータベースに出すことはできますが、テキストファイルとしてエクスポートすることはできません。またフォームやレポートのクラスモジュールについてはモジュールのみをエクスポートするということはできません。 一方、VBE(モジュールを編集する方のウィンドウ)にはメニュー操作として「ファイルのエクスポート」という機能がありますが、こちらはひとつずつしかエクスポートできないため、たくさんのモジュールを一度に出力するのは非常に面倒です。 そこで、VBEのエクスポート機能をプログラムから呼び出して、データベース内のすべてのモジュール(標準とフォーム/レポートのクラス)を外部のテキストファイルに一括出力・保存するプログラム例を紹介します。 コード例: Sub VBExport() Dim vbcmp As Object Dim strFileName As String Dim strExt As String For Each vbcmp In VBE.ActiveVBProject.VBComponents With vbcmp 'ファイル名までを設定 strFileName = "G:\modules\" & .Name '拡張子を設定 Select Case .Type Case 1 '標準モジュールの場合 strExt = ".bas" Case 2 'クラスモジュールの場合 strExt = ".cls" Case 100 'フォーム/レポートのモジュールの場合 strExt = ".cls" End Select 'モジュールをエクスポート .Export strFileName & strExt End With Next vbcmp End Sub 「VBComponents」のコレクションは、「VBE.ActiveVBProject」、すなわち現在VBE上でアクティブになっているVBAのプロジェクトに含まれているすべてのモジュールに関する情報を持っています。Accessの場合、標準モジュール、クラスモジュール、あるいはフォーム/レポートのクラスモジュールなどに関する情報です。 このコレクションからひとつずつオブジェクトを取り出すことで、ここのモジュールの情報を取得することができます。 「Name」プロパティでそのモジュール名、「Type」プロパティでモジュールの種類を調べることができます。 上記のサンプルコードでは、ひとつずつVBComponentオブジェクトを取り出し、「Name」を使ってエクスポート先のファイル名を設定、さらに「Type」に応じてエクスポートするファイルの拡張子を設定、最後に「Export」メソッドによってオブジェクトつまりモジュール内のプログラムのコードをエクスポートしています。 実行例: |
||||||
|
Copyright © T'sWare All rights reserved |