Excel Magicエクセル術
マクロ・VBA

一つのマクロをいろいろなExcelファイルで使う

個人用マクロブックPERSONAL.XLSBの作り方と、ThisWorkbook・ActiveWorkbookの使い分けを解説します。

まず、答えから。

日常的に使うマクロは「個人用マクロブック」に保存すると、同じPCで別のブックを開いたときにも実行できます。保存されるファイル名は通常PERSONAL.XLSBです。

デスクトップ版 Excel / 画面の手順はWindows版を想定

個人用マクロブックを作る

  1. [開発]タブの[マクロの記録]を選びます。開発タブがなければ、リボンの設定で表示します。
  2. 保存先を[個人用マクロブック]にし、名前を付けて記録を開始します。
  3. セルを1つ選択するなどの操作を行い、記録を終了します。
  4. Excelを終了するとき、個人用マクロブックへの変更を保存します。

次回起動時、PERSONAL.XLSBがバックグラウンドで開きます。通常は非表示のままで問題ありません。

既存のマクロを個人用マクロブックへ移す

Alt + F11でVBEを開き、VBAProject (PERSONAL.XLSB)の標準モジュールへ必要なコードをコピーします。元ブックを閉じても動くか、サンプルファイルで確認してください。

元ブック専用のシート名や絶対パスが書かれていると、別のファイルでは失敗します。コードを移すだけで対象ブックが自動的に切り替わるわけではありません。

ThisWorkbookとActiveWorkbookを区別する

ThisWorkbookはコードが保存されているブックです。個人用マクロではPERSONAL.XLSBを指します。ActiveWorkbookは現在操作中のブックを指すため、実行前に対象を確認します。

VBA
Public Sub ShowTargetWorkbook()
    If ActiveWorkbook Is Nothing Then Exit Sub
    If ActiveWorkbook Is ThisWorkbook Then Exit Sub
    MsgBox ActiveWorkbook.Name
End Sub

この例は対象ブック名を表示するだけです。実データを書き換える処理を作る際は、対象ブックを変数に保持し、そのブックのワークシートやセル範囲を明示して操作してください。

使えないときの確認

  1. Excelの終了時にPERSONAL.XLSBを保存したか確認します。
  2. VBEでPERSONAL.XLSBのプロジェクトが開いているか確認します。
  3. 組織のマクロポリシーを確認します。動かすためだけに全マクロを無条件で有効化しないでください。
  4. PC移行に備えてバックアップします。別のPCにある同名ファイルを上書きすると、既存のマクロが失われるおそれがあります。

本記事は旧URLの参照情報をもとに、新たに執筆した解説です。旧サイトの記事本文の復元・転載ではありません。画面や機能はExcelのバージョンによって異なります。