VAモジュール:すべてのVBAモジュールを一括で入出力する(ワード/エクセルVBA)

サンプル

VBAの作成や修正に生成AIを使う機会が増えてきましたね。

そうですね。でも、修正を行うときに、VBAのコードをAIにコピー&ペーストするのが面倒です。

なるほど。VBEでは、モジュールを一つずつしかエクスポートできませんからね。
プロジェクト全体を一括してエクスポートするマクロを作ってみましょう。

ついでにインポートする機能も付けてしまいましょう。

お願いします。

単純なマクロなのでAIで作れると思います。

概要

このマクロを実行すると、現在開いているWord文書(またはExcelブック)に含まれるすべての標準モジュール、クラス・モジュール、ユーザー・フォーム、ドキュメント・モジュール(ThisDocumentやThisWorkbook, Sheetなど)のモジュールをVBE形式のファイルにエクスポートします。

AIのプロンプトに出力されたファイルを追加するだけで、プロジェクトの全コードを瞬時に渡すことができます。

修正したコードをVBEにインポートすることもできます。

サンプルのダウンロード

マクロが含まれたWordアドインファイルをインターネットからダウンロードして利用する場合、セキュリティ上の理由からそのままでは動作しないことがあります。以下の手順でインストールを行ってください。

手順1:ファイルの「ブロック解除」を行う
  1. ダウンロードした.dotmファイルを右クリックし、「プロパティ」を選択します。
  2. 「全般」タブの下部にあるセキュリティの項目で、「許可する」(または「ブロックの解除」)にチェックを入れます。
  3. 「OK」をクリックします。
手順2:Officeソフト側でマクロを許可する

「ファイル」>「オプション」>「トラストセンター」>「マクロの設定」より、マクロが実行可能な状態か確認しておいてください。

手順3:アドインファイルを「STARTUP」フォルダに配置する
  1. エクスプローラーを開き、アドレスバーに以下のパスをコピー&ペーストしてEnterキーを押します。 %AppData%\Microsoft\Word\STARTUP
  2. 開いた「STARTUP」フォルダの中に、手順1でブロック解除したアドインファイル(.dotm)を保存(移動)してください。
手順4:インストールの確認

Wordを起動(または再起動)すれば、どのファイルを開いてもアドインのマクロが利用可能です。改めて設定画面での操作は不要です。

マクロが含まれたExcelアドインファイルをインターネットからダウンロードして利用する場合、セキュリティ上の理由からそのままでは動作しないことがあります。以下の手順でインストールを行ってください。

手順1:ファイルの「ブロック解除」を行う
  1. ダウンロードした.xlamファイルを右クリックし、「プロパティ」を選択します。
  2. 「全般」タブの下部にあるセキュリティの項目で、「許可する」(または「ブロックの解除」)にチェックを入れます。
  3. 「OK」をクリックします。
手順2:Officeソフト側でマクロを許可する

「ファイル」>「オプション」>「トラストセンター」>「マクロの設定」より、マクロが実行可能な状態か確認しておいてください。

手順3:アドインファイルを所定のフォルダに配置する
  1. エクスプローラーを開き、アドレスバーに以下のパスをコピー&ペーストしてEnterキーを押します。 %AppData%\Microsoft\Addins
  2. 開いた「Addins」フォルダの中に、手順1でブロック解除したアドインファイル(.xlam)を保存(移動)してください。
手順4:アドインを有効化する

A. 「開発」タブが表示されている場合

  1. Excelを開き、「開発」タブをクリックします。
  2. 「Excelアドイン」ボタンをクリックします。

B. 「開発」タブがない場合

  1. 「ファイル」>「オプション」をクリックします。
  2. 左側のメニューから「アドイン」を選択します。
  3. 画面下部の「管理:Excelアドイン」の横にある「設定」ボタンをクリックします。

表示されたアドインの一覧から、今回追加したアドインの名前にチェックを入れ、「OK」をクリックします。

使い方

アドインへの登録

ダウンロードしたファイルをWordの場合は「スタートアップフォルダ」、Excelの場合は「アドインフォルダ」に保存すれば、アドインとして、いつでもマクロを利用できるようになります。(他の使い方もできますが、この方法を推奨します。)

セキュリティ設定の変更

このマクロは、VBAプロジェクトの構造自体にアクセスしてコードを読み取るため、実行前にExcel/Word側でセキュリティ設定を許可する必要があります。

  1. 「ファイル」 > 「オプション」 > [トラスト センター] を開きます。
  2. 「トラスト センターの設定」 ボタンを押します。
  3. 「マクロの設定」 を選択します。
  4. 「VBAプロジェクト オブジェクト モデルへのアクセスを信頼する」にチェックを入れます。

この設定がOFFになっていると、マクロはエラーで停止します。

エクセルのアドインの場合

このマクロは、エクセルのアドイン・ファイル(.xlam)には対応していません。アドイン・ファイルは通常のブック・ファイル(.xlsm)に戻してからエクスポートを行ってください。
アドイン・ファイルをブック・ファイルに変更する手順については、次の記事を参考にしてください。

起動

すべてのモジュールをエクスポートしたいWordまたはExcelファイル開いて、アクティブな状態にしてから、リボンの「エクスポート/インポート」ボタンをクリックしてください。←New

メニューが表示されますので、「VBAモジュールをエクスポート」または「VBAモジュールをインポート」を選択してください。

VBEからbasMainモジュールのMainプロシージャを直接実行することもできます。←New

モジュールのエクスポート

各モジュールのファイルとすべてのモジュールを統合したファイルが、選択したフォルダに保存されます。

モジュールのインポート

クイックアクセス・ツールバーの「インポート」ボタンをクリックすると、選択したフォルダ内に統合したファイルがある場合はその内容が、それがない場合は各モジュールのファイルの内容がアクティブ・ブックにインポート(上書き)されます。

著作権表示および変更履歴

このマクロの著作権表示変更履歴は、「ThisDocument」モジュールに記載しています。

制限事項

動作確認はMicrosoft365で行っています。
Mac用Wordでは動作しません。

ThisWorkbookSheet1 などのモジュールは、VBAの内部構造としては「ドキュメント クラス」と呼ばれるクラスモジュールの一種として扱われています。そのため、エクスポートすると通常のクラスモジュールと同じ .cls 拡張子が付与されます。また、インポートはクラスモジュールとして行われます。

コメント

  1. 管理人 より:

    「単一のテキストファイルに出力」から「それぞれのVBE形式ファイルに出力」に変更しました。
    一括インポート機能を追加しました。

  2. 管理人 より:

    「制限事項」を追加しました。

  3. 管理人 より:

    プロジェクト名を設定しました。(Ver201)

  4. 管理人 より:

    AIに読み込めるファイル数の制限を超過する場合に対応できるようにするため、すべてのモジュールを統合したファイルのエクスポートおよびインポート機能を追加しました。(Ver210)

  5. 管理人 より:

    インポートおよびエクスポートファイルの文字コードをUTF-8に変更しました。(Ver240)

  6. 管理人 より:

    VBEからのエクスポート/インポート機能を追加しました。
    結合ファイル名をプロジェクト名に変更しました。
    インポート時のフォーム消失バグを修正しました。
    モジュールを分割しました(Import/Export/Utility)。
    リボンメニューに変更しました。(Ver300)

タイトルとURLをコピーしました