メインコンテンツへスキップ

すべてのExcelワークブックでVBAマクロを保存して使用するにはどうすればよいですか?

Author: Zhoumandy Last Modified: 2025-08-06

異なるExcelワークブックで、繰り返し計算の自動化、データ書式設定、数値を単語に変換するようなカスタム関数など、同じVBAマクロを繰り返し使用する必要がある状況は多いです。一般的な課題は、デフォルトではマクロが作成されたワークブック内にのみ保存されるため、新しいドキュメントで簡単にアクセスしたり再利用したりできないことです。しかし、ExcelにはVBAマクロをグローバルに利用可能にするための柔軟な方法がいくつか提供されています。これにより、新しいワークブックを作成するたびにコードを再コピーする必要がなくなります。このチュートリアルでは、さまざまなアプローチに関する包括的な手順を提供し、すべてのワークブックでVBAマクロを簡単にアクセスできるようにして、生産性とワークフローを向上させます。

A screenshot showing the Add-ins dialog in Excel

すべてのワークブックで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 を押して「名前を付けて保存」ダイアログを開きます。
A screenshot showing the Save option in the VBA window

4. 「名前を付けて保存」ウィンドウで、「ファイル名」フィールドに希望のファイル名を入力します。「保存形式」ドロップダウンでは、必ず Excelアドイン (*.xlam).
A screenshot showing the Save As dialog box with the selection of Excel Add-in (*.xlam) as the save type

5. 「保存」ボタンをクリックして、ワークブックをExcelアドインファイルとして保存します。これにより、いつでもどのワークブックでも有効にできる再利用可能なアドインが作成されます。
A screenshot showing the workbook saved as an Excel Add-in

6. 保存後、戻ってExcelに戻り、アドインに変換したワークブックを閉じます。

7. 新しいまたは既存のワークブックを開き、目的のセル(例:B2)にカスタム数式を入力します:

=NumberstoWords(A2)
注意: この段階で「#NAME?」エラーが表示される場合があります。これは、マクロ関数を持つアドインがまだExcel全体にロードされていないためです。以下に続く手順に従って、すべてのワークブックでマクロを使用できるようにしてください。
A screenshot of the #NAME? error before applying the saved VBA macro

8. 開発 タブに移動し、 Excelアドイン ボタンをアドイングループ内でクリックします。
A screenshot showing the Add-ins option under the Developer tab in Excel

9. 表示されるアドインダイアログで、 参照.
A screenshot of the Add-ins dialog box in Excel

10. 先ほど保存したアドインファイルを見つけ選択し、次に OK.
A screenshot showing the selection of a custom Add-in file in Excel

11. あなたのカスタムアドイン(例:「数値を単語に変換するアドイン」)がアドインリストに表示されるはずです。それがチェックされていることを確認して OK をクリックして有効にします。
A screenshot showing the custom add-in the Add-ins dialog box in Excel

12. これで、カスタム関数を対象のセル(例:B2)に入力し直し、「Enter」キーを押します。正しく英単語に変換された数値が返されるはずです。

=NumberstoWords(A2)

13. 変換式を複数の数値に素早く適用するには、セルのオートフィルハンドルを下にドラッグして、他のセルに関数をコピーします。

A screenshot showing the final result of the converted numbers to words

ヒントと注意:

  • マクロをアドインとして保存することで、すべてのワークブックで同じカスタム関数、コード、または自動化を利用でき、時間の節約と一貫性の向上につながります。
  • Excelが閉じられたり、アドインが無効になった場合、アドインから再度ロードされるまで関数は一時的に「#NAME?」と表示される場合があります。混乱を避けるために、必要な場合は常にアドインマネージャーでアドインが有効になっていることを確認してください。
  • 一部のユーザーはデフォルトで開発タブが表示されない場合があります。これを有効にするには、リボンを右クリックし、「リボンのユーザー設定」を選択して「開発」オプションをチェックします。
  • アドインを永続的なフォルダに保存するのが良い習慣です。これにより、ファイルが移動または名前変更された場合に参照が失われるのを防げます。

必要に応じてコードを手動で実行することも可能で、デバッグ中や即席の使用時にこれが役立つ場合があります:

  1. クイックアクセスツールバーにマクロを割り当てると、任意の表示されているワークブックでワンクリック実行が可能です。これを行うには、クイックアクセスツールバーを右クリックして「クイックアクセスツールバーのユーザー設定」を選択し、マクロを追加します。
    A screenshot showing how to add the VBA macro to the Quick Access Toolbar
  2. また、Alt + F11を押してVBAエディターを開き、マクロを手動で選択してF5キーを押して必要なときにコードを実行することもできます。

利点: このソリューションにより、アドインが有効である限り、豊富で再利用可能なマクロ機能を作成し共有できます。
欠点: ユーザーはアドインを読み込む必要があり、また、ワークブックを共有する場合にはアドインファイルと関数の詳細も共有する必要があります。さらに、アドインはExcel Onlineでは使用できません。


個人用マクロブック方式

お気に入りまたは最もよく使用するマクロがどのExcelセッションでも準備されているもう一つの非常に実用的な方法は、個人用マクロブック(PERSONAL.XLSB)を使用することです。これは、Excelが起動するたびに自動的にロードされる特別な隠しExcelファイルであり、内部に保存されたマクロはすべての開いているワークブックで利用できます。

適用シナリオ: 個人の自動化、日常的な書式設定スクリプト、正式なExcelアドインとして共有する必要がないユーティリティ関数に理想的です。PERSONAL.XLSB内のマクロは、どのファイルが開かれているかに関係なく、コンピュータ上で利用可能です。

利点: マクロは、ローカルのExcelプロファイルでグローバルに利用可能で、アドインや余分なファイルのインストールは不要です。
欠点: この方法で保存されたマクロは、PERSONAL.XLSBが存在するコンピュータとアカウントでのみ使用できます。他人と共有するには、モジュールを手動でエクスポートおよびインポートする必要があります。

  • この方法を使用するには、まずマクロを記録または作成し、それを個人用マクロブックに保存されていることを確認する必要があります。

次の手順に従ってください:

  1. Excelを開きます。「表示」タブで「マクロ」をクリックし、「マクロの記録」を選択します。
  2. ダイアログで、「マクロの保存先」の下にある「個人用マクロブック」を選択します。記録を完了します(必要なければすぐに停止できます)。
  3. Alt + F11を押してVBAエディターに入ります。ここで、PERSONAL.XLSBのプロジェクトが表示されます。ここに新しいモジュールを挿入するか、目的のマクロコードを貼り付けます。
  4. 変更を保存します。Excelは自動的にスタートアップフォルダにPERSONAL.XLSBワークブックを作成し、維持します。
  5. PERSONAL.XLSB内のマクロダイアログ(Alt + F8)経由で実行したり、リボンやツールバーボタンに割り当てたり、VBAから呼び出したりできます。

トラブルシューティングとメンテナンス: PERSONAL.XLSB内のマクロが利用できない場合は、Excelがセーフモードで開いているか、マクロのセキュリティ設定が「すべてのマクロを無効にする」に設定されているか確認してください。また、PERSONAL.XLSBはデフォルトで非表示です。保存せずに閉じたり削除したりした場合、マクロを再記録して再生成する必要があります。

ヒント: 定期的にPERSONAL.XLSBファイルをバックアップしてください。システムプロファイルフォルダ内にあります。通常、場所は次の通りです:
C:\Users\[YourUserName]\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB

その他の操作(記事)

Excelで全アドインをリストするためのVBAコード
Excelでは、より良いデータ処理のためにアドインを追加または挿入することがあります。オプションウィンドウにアクセスしてすべてのアドインを確認できますが、シートにすべてのアドインをリストすることは可能でしょうか?このチュートリアルでは、Excelで全アドインをリストするためのVBAコードを紹介します。

ワークブックを開くまたは閉じる際にVBAマクロを実行するにはどうすればよいですか?
この記事では、ワークブックを開くまたは閉じるたびにVBAコードを実行する方法について説明します。

ExcelでVBAコードを保護/ロックするにはどうすればよいですか?
ワークブックやワークシートをパスワードで保護できるように、Excelのマクロもパスワードを設定して保護できます。

ExcelでVBAマクロ実行後に遅延時間を設定するにはどうすればよいですか?
場合によっては、ExcelでVBAマクロをトリガーするためのタイマー遅延が必要になることがあります。例えば、指定されたマクロをクリックすると、10秒後に効果が発揮されます。この記事では、その方法を示します。

最高のオフィス生産性ツール

🤖 Kutools AI Aide:データ分析を革新:インテリジェント実行   |  コード生成  |  カスタム数式の作成  |  データを分析してグラフを生成  |  Kutools Functions を呼び出す
人気機能重複の検索・ハイライト・マーキング   |  空白行を削除   |  データを失わず列やセルを統合   |   丸める ...
スーパーLOOKUP複数条件VLOOKUP   複数値VLOOKUP  |  複数シートの検索  |  ファジーマッチ ....
高度なドロップダウンリストすばやくドロップダウンリストを作成   |  依存型ドロップダウンリスト   |  複数選択ドロップダウンリスト ....
列の管理:特定数の列を追加  | 列を移動  | 非表示列の表示状態を切り替え |  範囲と列の比較 ...
注目機能グリッドフォーカス   |  デザインビュー  |  強化された数式バー   ワークブック&ワークシートの管理   |  オートテキスト ライブラリ (Auto Text)   |  日付ピッカー   |  データの統合   |  セルの暗号化/復号化    リスト送信で電子メールを送信   |  スーパーフィルター   |   特殊フィルタ(太字/斜体/取り消し線でフィルタ...)
トップ15ツールセット12 種類のテキストツールテキストの追加特定の文字を削除など)  |  50 種以上のグラフ タイプガントチャートなど)  |  40を超える実用的な 数式誕生日に基づいて年齢を計算する、など)  |  19種の 挿入ツールQRコードの挿入パスから画像の挿入など)  |  12種類の 変換ツール単語に変換する通貨変換など)  |  7つの 結合&分割ツール高度な行のマージセルの分割など)  |  ...さらに多数
お好きな言語でKutoolsを使用できます ― 英語、スペイン語、ドイツ語、フランス語、中国語など40以上に対応!

Kutools for ExcelでExcelスキルを強化し、かつてない効率を体験しましょう。 Kutools for Excelは300以上の高度な機能で生産性向上と時間短縮を実現します。最も必要な機能を今すぐ取得...


Office TabはOfficeにタブ表示を追加し、作業効率を大幅に向上させます

  • Word、Excel、PowerPointでタブ編集とタブ閲覧を有効にします
  • 同じウィンドウ内の新しいタブで複数のドキュメントを開いたり作成したりできます。新しいウィンドウを開く必要はありません。
  • 生産性が50%向上し、1日に何百回ものマウスクリックも削減できます!