Excel で VBA マクロをすべてのワークブックで保存・使用する方法は?
繰り返し計算の自動化、データの書式設定、数値を単語に変換するカスタム関数など、同じ VBA マクロをさまざまなExcel ワークブックで再利用したい場面は多くあります。しかし一般的な課題として、マクロは既定では作成されたワークブック内にのみ保存されるため、新規ドキュメントではすぐにアクセスしたり再利用したりできません。 ところが、Excel には VBA マクロをグローバルに利用可能にする柔軟な方法がいくつか備わっています。これにより、新しいワークブックを開くたびにコードを手動で再コピーする手間が省けます。 このチュートリアルでは、VBA マクロをすべてのワークブックで簡単に使えるようにするためのさまざまなアプローチを、包括的な手順とともにご紹介します。これであなたの生産性とワークフローがさらに向上します。

VBA コードをすべてのワークブックで保存して使用する
パーソナルマクロブック方式
たとえば、カスタム VBA コードを使って数値を対応する英単語に変換し、どのワークブックで作業していてもこの機能をいつでも使えるようにしたいとします。適切な方法を使えば、VBA モジュールを再利用可能な形で保存でき、Excel で必要になるたびにすぐに活用できます。これは、同じコードを複数のファイルに繰り返しコピーすることなく、お気に入りのカスタム関数や自動化機能を毎回手軽に使える点で特に役立ちます。
これを行うには、VBA コードをカスタムExcel アドインとしてパッケージ化します。このアドインをExcel で有効にすると、カスタム機能がグローバルに利用可能な関数として提供されます。
以下の手順に従ってください。
1。Excel でAlt + F11を押すと、「Microsoft Visual Basic for Applications」ウィンドウが開きます。
2。VBA エディターで、挿入 > 標準モジュールをクリックし、新しく開いたモジュールウィンドウに次のマクロを貼り付けてください。
VBA コード:単語に変換するを変換
Function NumberstoWords(ByVal MyNumber)
'Update by ExtendofficeDim xStr As StringDim xFNum As IntegerDim xStrPointDim xStrNumberDim xPoint As StringDim xNumber As StringDim xP() As VariantDim xDPDim xCnt As IntegerDim xResult, xT As StringDim xLen As IntegerOn Error Resume NextxP = Array("", "Thousand ", "Million ", "Billion ", "Trillion ", " ", " ", " ", " ")
xNumber = Trim(Str(MyNumber))
xDP = InStr(xNumber, ".")
xPoint = ""
xStrNumber = ""
If xDP >0 ThenxPoint = " point "
xStr = Mid(xNumber, xDP +1)
xStrPoint = Left(xStr, Len(xNumber) - xDP)
For xFNum =1 To Len(xStrPoint)
xStr = Mid(xStrPoint, xFNum,1)
xPoint = xPoint & GetDigits(xStr) & " "
Next xFNumxNumber = Trim(Left(xNumber, xDP -1))
End IfxCnt =0xResult = ""
xT = ""
xLen =0xLen = Int(Len(Str(xNumber)) /3)
If (Len(Str(xNumber)) Mod3) =0 Then xLen = xLen -1Do While xNumber <> ""
If xLen = xCnt ThenxT = GetHundredsDigits(Right(xNumber,3), False)
ElseIf xCnt =0 ThenxT = GetHundredsDigits(Right(xNumber,3), True)
ElsexT = GetHundredsDigits(Right(xNumber,3), False)
End IfEnd IfIf xT <> "" ThenxResult = xT & xP(xCnt) & xResultEnd IfIf Len(xNumber) >3 ThenxNumber = Left(xNumber, Len(xNumber) -3)
ElsexNumber = ""
End IfxCnt = xCnt +1LoopxResult = xResult & xPointNumberstoWords = xResultEnd FunctionFunction GetHundredsDigits(xHDgt, xB As Boolean)
Dim xRStr As StringDim xStrNum As StringDim xStr As StringDim xI As IntegerDim xBB As BooleanxStrNum = xHDgtxRStr = ""
On Error Resume NextxBB = TrueIf Val(xStrNum) =0 Then Exit FunctionxStrNum = Right("000" & xStrNum,3)
xStr = Mid(xStrNum,1,1)
If xStr <> "0" ThenxRStr = GetDigits(Mid(xStrNum,1,1)) & "Hundred "
ElseIf xB ThenxRStr = "and "
xBB = FalseElsexRStr = " "
xBB = FalseEnd IfEnd IfIf Mid(xStrNum,2,2) <> "00" ThenxRStr = xRStr & GetTenDigits(Mid(xStrNum,2,2), xBB)
End IfGetHundredsDigits = xRStrEnd FunctionFunction GetTenDigits(xTDgt, xB As Boolean)
Dim xStr As StringDim xI As IntegerDim xArr_1() As VariantDim xArr_2() As VariantDim xT As BooleanxArr_1 = Array("Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen ")
xArr_2 = Array("", "", "Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety ")
xStr = ""
xT = TrueOn Error Resume NextIf Val(Left(xTDgt,1)) =1 ThenxI = Val(Right(xTDgt,1))
If xB Then xStr = "and "
xStr = xStr & xArr_1(xI)
ElsexI = Val(Left(xTDgt,1))
If Val(Left(xTDgt,1)) >1 ThenIf xB Then xStr = "and "
xStr = xStr & xArr_2(Val(Left(xTDgt,1)))
xT = FalseEnd IfIf xStr = "" ThenIf xB ThenxStr = "and "
End IfEnd IfIf Right(xTDgt,1) <> "0" ThenxStr = xStr & GetDigits(Right(xTDgt,1))
End IfEnd IfGetTenDigits = xStrEnd FunctionFunction GetDigits(xDgt)
Dim xStr As StringDim xArr_1() As VariantxArr_1 = Array("Zero ", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine ")
xStr = ""
On Error Resume NextxStr = xArr_1(Val(xDgt))
GetDigits = xStrEnd Function 3。次に、ウィンドウの左上隅にある「保存」アイコンをクリックするか、Ctrl + Sを押して、「名前を付けて保存」ダイアログを開きます。![VBA ウィンドウの [保存] オプションを示すスクリーンショット](http://cdn.extendoffice.com/images/stories/doc-excel/save-use-vba-macros-in-all-workbooks/doc-save-use-vba-macros-in-all-workbooks-02.png)
4。「名前を付けて保存」ウィンドウで、「ファイル名」フィールドに任意のファイル名を入力してください。「保存形式を指定」ドロップダウンメニューでは、必ずExcel アドイン(*。xlam)を選択しましょう。![[名前を付けて保存] ダイアログ ボックスで保存形式として「Excel アドイン (*.xlam)」が選択されているスクリーンショット](http://cdn.extendoffice.com/images/stories/doc-excel/save-use-vba-macros-in-all-workbooks/doc-save-use-vba-macros-in-all-workbooks-03.png)
5。「保存」ボタンをクリックして、ワークブックをExcel アドインファイルとして保存しましょう。これにより、いつでもどのワークブックからでも有効化できる再利用可能なアドインが完成します。
6。保存後、Excel に戻って、アドインに変換したばかりのワークブックを閉じます。
7。マクロを使いたい新しいワークブック、または既存のワークブックを開き、適切なセル(例:B2)にカスタム数式を入力します。
=NumberstoWords(A2) 
8。開発タブに移動し、アドイングループ内のExcel アドインボタンをクリックします。![Excel の [開発] タブにある [アドイン] オプションを示すスクリーンショット](http://cdn.extendoffice.com/images/stories/doc-excel/save-use-vba-macros-in-all-workbooks/doc-save-use-vba-macros-in-all-workbooks-06.png)
9。表示されるアドインダイアログで、参照を選択してください。
10。先ほど保存したアドインファイルを選択して、OKをクリックします。
11。「数値を単語に変換するアドイン」などのカスタムアドインがアドインリストに表示されるはずです。チェックが入っていることを確認し、OKをクリックして有効化してください。
12。次に、対象セル(例:B2)にもう一度カスタム関数を入力し、Enterを押してください。すると、数値に対応する正しい英単語が表示されます。
=NumberstoWords(A2) 13。変換数式を複数の数値に素早く適用するには、セルのオートフィルハンドルを下方向にドラッグして、その関数を他のセルにコピーします。

ヒントと注意点:
- マクロをアドインとして保存すれば、同じカスタム関数、コード、自動化機能をすべてのワークブックで利用可能になり、時間の節約と一貫性の向上を実現します。
- Excel が閉じられているか、後でアドインが無効にされた場合、そのアドインの関数は一時的に「#NAME?」と表示されることがあります。この状態は、アドインが再度読み込まれるまで続きます。混乱を避けるため、必要な際には常にアドインマネージャーでアドインが有効になっていることをご確認ください。
- 一部のユーザーでは、既定で開発タブが表示されない場合があります。これを有効にするには、リボンを右クリックして「リボンのユーザー設定」を選択し、「開発」オプションにチェックを入れてください。
- ファイルが移動または名前変更された際に参照先が失われないよう、アドインは恒久的なフォルダーに保存することをおすすめします。
手動でコードを実行することも可能です。デバッグ時やアドホックな用途では、こちらの方がかえって便利な場合もあります。
- クイックアクセスツールバーにマクロを登録すれば、現在表示中のワークブックを問わず、ワンクリックで実行できます。設定するには、クイックアクセスツールバーを右クリックし、「クイックアクセスツールバーのユーザー設定」を選択して、マクロを追加してください。

- また、Alt + F11を押して VBA エディターを開き、マクロを手動で選択し、必要に応じてF5を押してコードを実行することもできます。
メリット:この方法を使えば、アドインが有効な限り常に動作する、高度で再利用可能なマクロ機能を簡単に作成・共有できます。
デメリット:ユーザーはアドインを読み込むことを覚えておく必要があります。また、ワークブックを共有する際には、アドインファイルとその関数の詳細も併せて共有しなければなりません。さらに、アドインはExcel オンラインではご利用いただけません。
お気に入りやよく使うマクロを、開いているワークブックにかかわらずすべてのExcel セッションで常に利用可能にするもう一つの非常に実用的な方法は、パーソナルマクロブック(PERSONAL.XLSB)を使うことです。これは特別な非表示Excel ファイルで、Excel 起動時に自動的に読み込まれるため、保存されたマクロをすべての開いているワークブックですぐに使えるようになります。
適用可能なシナリオ:正式なExcel アドインとして共有する必要のない、個人用の自動化タスク、日常的な書式設定スクリプト、またはユーティリティ関数に最適です。PERSONAL.XLSB 内のマクロは、どのファイルを開いていても、自分のコンピューター上でいつでも利用可能!
メリット:マクロはローカルのExcel プロファイル内でグローバルに利用可能で、アドインや追加ファイルのインストールは一切不要です。
デメリット:この方法で保存されたマクロは、PERSONAL.XLSB ファイルが存在するコンピューターおよびアカウントでのみ使用可能です。他のユーザーと共有するには、モジュールを手動でエクスポートし、相手側でインポートする必要があります。
- この方法を利用するには、まずマクロを記録または作成し、パーソナルマクロブックに保存する必要があります。
以下の手順に従ってください。
- Excel を開きます。表示タブで、マクロをクリックし、続いてマクロの記録をクリックします。
- ダイアログボックスで、「マクロの保存先」の下にあるパーソナルマクロブックを選択し、記録を完了してください(不要な場合はすぐに停止してもかまいません)。
- Alt + F11を押して VBA エディターを開き、PERSONAL.XLSB 用のプロジェクトを確認してください。ここに新しいモジュールを挿入するか、必要なマクロコードを貼り付けましょう。
- 変更内容は保存されます。Excel は自動的にスタートアップフォルダーに PERSONAL.XLSB ワークブックを作成・管理します。
- PERSONAL.XLSB 内のマクロは、マクロダイアログ()Alt + F8)から実行したり、リボンやツールバーボタンに割り当てたり、VBA から呼び出したりできます。
トラブルシューティングとメンテナンス:PERSONAL.XLSB 内のマクロが利用できない場合は、Excel がセーフモードで起動していないか、またはマクロのセキュリティ設定が「すべてのマクロを無効にする」になっていないかをご確認ください。また、PERSONAL.XLSB は既定で非表示になっているため、誤って保存せずに閉じたり削除したりした場合には、マクロを再記録してファイルを再生成する必要があるかもしれません。
C:\Users\[YourUserName]\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSBExcel ですべてのアドインを一覧表示する VBA コード
Excel では、データ処理をより効率的に行うためにさまざまなアドインを追加・挿入することがあります。通常はオプションウィンドウでアドインを確認できますが、シート上にすべてのアドインを一覧表示する方法はあるのでしょうか?このチュートリアルでは、Excel で全アドインをシートに一覧表示するための VBA コードをご紹介します!
ワークブックを開く・閉じる際に VBA マクロを実行する方法は?
この記事では、ワークブックを開いたり閉じたりするたびに自動で VBA コードが実行される設定方法を解説します。
Excel で VBA コードを保護/ロックする方法は?
ワークブックやワークシートをパスワードで保護できるのと同様に、Excel のマクロ(VBA コード)もパスワードで保護できます。
Excel で VBA マクロ実行後にタイムディレイを設定する方法は?
場合によっては、Excel で VBA マクロをトリガーする前にタイマーによる遅延を挿入したいことがあります。たとえば、特定のマクロを実行するようにクリックした後、10 秒経過してから効果が現れるようにしたいケースなどです。この記事では、その実現方法を詳しくご紹介します。
最高の Office 業務効率化ツール
| 🤖 | KUTOOLS AI アシスタント:次に基づいてデータ分析を革新します:インテリジェント実行 | コード生成| カスタム数式作成 | データ分析とチャート生成| 拡張機能呼び出し… |
| 人気の機能:検索・ハイライト、または重複をマーキング | 空白行を削除する | データを失うことなく列の結合またはセルを | 数式を使用しない四捨五入... | |
| スーパー LOOKUP:複数条件 VLookup | 複数値 VLookup | 複数シート間 VLookup | ファジーマッチ.... | |
| 高度なドロップダウンリスト:ドロップダウンリストをすばやく作成 | 連動型ドロップダウンリスト | 複数選択可能なドロップダウンリスト.... | |
| 列マネージャー:指定した数の列を追加|列の移動|非表示列の表示状態を切り替え|範囲および列の比較... | |
| 注目の機能:グリッドフォーカス | デザインビュー |強化された数式バー | ワークブックとシートマネージャー | リソースライブラリ(オートテキスト)| 日付ピッカー | ワークシートの統合 | 暗号化/セルの復号化 | リストからメール送信 | スーパーフィルター | 特殊フィルタ(太字のフォントを持つセルをフィルタリング/斜体/取り消し線。。。) 。。。 | |
| トップ15 ツールセット:12 テキストツール(テキストの追加、特定の文字を削除、...)| 50+チャートタイプ(ガントチャート、...)| 40+実用的関数(誕生日に基づいて年齢を計算します、...)| 19 挿入ツール(QR コードを挿入、パスから画像を挿入、...)| 12 変換ツール(単語に変換する、為替レートの変換、...)| 7 結合と分割ツール(高度な行のマージ、セルの分割、...)|さらに多数 |
Kutools for Excel でExcel スキルを強化し、これまでにない効率を体験しましょう。Kutools for Excel は、生産性を高め、時間を大幅に節約できる高度な機能を300 以上提供します。最も必要な機能を今すぐ入手するにはこちらをクリック。。。
Office Tab は Office にタブインターフェースをもたらし、作業を大幅に簡単にします
- Word、Excel、PowerPoint でタブを使った編集と閲覧を有効にします。Publisher、Access、Visio、Project でもご利用いただけます。
- 複数のドキュメントを、新しいウィンドウではなく、同じウィンドウ内の新しいタブで開いたり作成したりできます。
- 日々の生産性を50%も向上させ、毎日数百回ものマウスクリックを削減します!
すべてのKutools アドインが、たった1 つのインストーラーで完結。
Kutools for Officeスイートには、Excel ・Word ・Outlook ・PowerPoint 用のアドインと Office Tab Pro が含まれており、複数の Office アプリを横断して作業するチームに最適です。
- オールインワンスイート— Excel、Word、Outlook、PowerPoint 用アドイン+Office Tab Pro
- インストーラー1 つ、ライセンス1 つ— 数分でセットアップ可能(MSI 対応)
- 連携してさらにパワーアップ— Office アプリ全体で生産性が向上
- 30 日間のフル機能トライアル— 登録不要、クレジットカード不要
- 最高のお得感— 個別アドイン購入よりお得
