#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」メソッドによってオブジェクトつまりモジュール内のプログラムのコードをエクスポートしています。

実行例:
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved