カテゴリ: Excel VBA 更新日: 2026/03/11

Excel VBA共通関数ライブラリの作り方!別ブックやシートで使い回す方法

他のブック・シートで使える共通関数ライブラリの作り方
他のブック・シートで使える共通関数ライブラリの作り方

先生と生徒の会話形式で理解しよう

生徒

「先生、別のエクセルファイルで作った便利な計算プログラムを、新しいファイルでも使いたいんです。毎回コピーして貼り付けるのは面倒なのですが、何か良い方法はありますか?」

先生

「それは素晴らしい気づきですね!VBAでは『共通関数ライブラリ』という仕組みを作れば、一度書いたコードをどのブックからでも呼び出せるようになるんですよ。」

生徒

「ライブラリ……図書館みたいに、いつでも借りに行けるイメージですか?」

先生

「まさにその通りです。プログラムの部品を整理して、いつでも取り出せるように準備する方法を一緒に学んでいきましょう!」

1. 共通関数ライブラリとは?

1. 共通関数ライブラリとは?
1. 共通関数ライブラリとは?

エクセルVBAにおける共通関数ライブラリとは、複数のエクセルブック(ファイル)やシートで繰り返し使う「便利なプログラムの詰め合わせ」のことです。例えば、消費税の計算、複雑な住所の分割、特定の色がついたセルの集計など、よく使う処理を一つの場所にまとめておきます。

これを作っておくと、新しい業務で同じような処理が必要になったとき、わざわざ最初からコードを書き直したり、古いファイルを探してコピーしたりする必要がなくなります。自分専用の「魔法の道具箱」をパソコンの中に作るようなものだと考えてください。プログラミングの効率が上がるだけでなく、一箇所を直せば全てのファイルに反映されるため、間違いも少なくなります。

2. アドイン形式で保存するメリット

2. アドイン形式で保存するメリット
2. アドイン形式で保存するメリット

共通関数をどこでも使えるようにする最も一般的な方法が「エクセルアドイン(.xlam)」として保存することです。通常のエクセルファイル(.xlsxや.xlsm)とは違い、アドインとして保存したファイルは、エクセルを開いている間、裏側で常にスタンバイしてくれます。

アドインにすることで、見た目にはシートが見えない状態で機能だけを提供できるようになります。これにより、作業中のシートを汚すことなく、自作の関数をまるでエクセルに最初から備わっている SUM 関数のなどのように呼び出すことが可能になります。パソコン初心者の方でも、一度設定してしまえば、あとは意識せずにその便利さを享受できるのが最大の特徴です。

3. 共通利用したい「計算関数」を作成する

3. 共通利用したい「計算関数」を作成する
3. 共通利用したい「計算関数」を作成する

まずは、ライブラリの核となる「関数」を作ってみましょう。関数とは、何かデータを入れると、計算結果を返してくれる仕組みのことです。ここでは例として、税込み価格を計算するシンプルな関数を作ります。このコードを新しいブックの「標準モジュール」という場所に書き込みます。


' 税込み金額を計算する共通関数
' Publicを付けることで、他の場所からも見えるようになります
Public Function GetTaxPrice(ByVal price As Long) As Long
    ' 0.1は消費税10%のことです
    GetTaxPrice = Int(price * 1.1)
End Function

この関数の名前は GetTaxPrice です。カッコの中の price が、計算してほしい元の金額です。このように Public と宣言することで、他のブックからこの関数を見つけられるようになります。これはライブラリ作りの基本中の基本です。

4. 文字列を整える「便利関数」を追加する

4. 文字列を整える「便利関数」を追加する
4. 文字列を整える「便利関数」を追加する

ライブラリには計算だけでなく、文字の見た目を整える処理も入れておくと重宝します。例えば、入力された文字の前後の余分なスペースを消して、全て全角にするような処理です。事務作業ではデータの揺れを直す作業が多いので、こうした関数が手元にあると非常に助かります。


' 文字列を綺麗に整える共通関数
Public Function CleanText(ByVal targetText As String) As String
    ' 余分な空白を消して、全角に変換します
    Dim temp As String
    temp = Trim(targetText)
    CleanText = StrConv(temp, vbWide)
End Function

関数を分けることで、メインのプログラムは「文字を綺麗にしろ」と命令を出すだけで良くなります。中身がどうなっているか詳しく知らなくても、名前を見ただけで使い方がわかるようにするのが、良いライブラリの条件です。パソコン操作に慣れていない人でも、名前さえ知っていれば使いこなせるようになります。

5. 作成したブックをアドインとして保存する方法

5. 作成したブックをアドインとして保存する方法
5. 作成したブックをアドインとして保存する方法

コードが書けたら、いよいよライブラリ化します。エクセルの「ファイル」メニューから「名前を付けて保存」を選び、ファイルの種類を「Excelアドイン (*.xlam)」に変更して保存してください。保存場所は通常、自動的にアドイン専用のフォルダが選ばれます。

保存したら、エクセルの設定画面からそのアドインを「有効」にするチェックを入れます。これで、あなたが書いたプログラムはエクセルというソフトの一部として組み込まれました。新しい空のブックを開いても、先ほど作った GetTaxPrice 関数をセルの中で使えるようになっているはずです。まるでエクセルが進化したかのような感覚を味わえるでしょう。

6. 他のブックからライブラリを呼び出す実践

6. 他のブックからライブラリを呼び出す実践
6. 他のブックからライブラリを呼び出す実践

アドインに保存した関数は、セルの数式としてだけでなく、他のマクロプログラムの中から呼び出すこともできます。これが「プロシージャ設計」の高度なテクニックです。別のブックに書いたメインのプログラムから、ライブラリの関数を呼び出してみましょう。


' メインの作業用ブックで実行するプログラム
Sub ExecuteProcess()
    Dim unitPrice As Long
    unitPrice = 2000
    
    ' アドイン内の関数を使って税込み価格を取得
    ' セルに書くのと同じ感覚でVBA内でも使えます
    Dim finalPrice As Long
    finalPrice = GetTaxPrice(unitPrice)
    
    MsgBox "ライブラリで計算した結果は " & finalPrice & " 円です。"
End Sub

もし名前が重なっていてエラーが出る場合は、Run という命令を使ったり、参照設定という高度な設定を行ったりすることで解決できます。しかし、まずはこのように直接名前を呼んで動くことを確認するのが、ライブラリ活用の第一歩です。

7. シート操作を自動化する部品の登録

7. シート操作を自動化する部品の登録
7. シート操作を自動化する部品の登録

数値の計算以外にも、「特定の名前のシートを一番最後に作る」といった、操作そのものを部品にすることもできます。これは Sub(サブ)プロシージャとして作成します。戻り値(答え)は必要ないけれど、特定の作業を代行してほしいときに使います。


' 指定した名前のシートを末尾に追加する共通部品
Public Sub AddLastSheet(ByVal sheetName As String)
    Dim ws As Worksheet
    ' 新しいシートを追加して一番後ろに移動
    Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = sheetName
End Sub

こうした定型的な操作をライブラリに入れておくと、複数のブックで同じような資料作成を行う際に、マクロの記述量が大幅に減ります。プログラムが短くなるということは、それだけ読みやすく、間違いにくい、質の高いプログラムになるということです。

8. ライブラリをメンテナンスする際の注意点

8. ライブラリをメンテナンスする際の注意点
8. ライブラリをメンテナンスする際の注意点

共通関数ライブラリは作って終わりではありません。消費税率が変わったり、業務ルールが変更になったりしたときには、ライブラリの方を修正する必要があります。ここで注意したいのは、「関数の使い勝手を変えない」ことです。

例えば、今まで「金額」だけを受け取っていた関数を、急に「日付と金額」の両方が必要、という形に変えてしまうと、その関数を使っていた他の全てのブックが動かなくなってしまいます。中身の計算式を最新にするのは良いですが、呼び出し方(引数の数や種類)は変えないように注意しましょう。これが、長く使い続けられる「強いライブラリ」を作るコツです。パソコンの中を整理整頓するのと同じように、プログラムも丁寧に手入れしてあげましょう。

9. チームで共有するためのエクスポート機能

9. チームで共有するためのエクスポート機能
9. チームで共有するためのエクスポート機能

自分一人だけでなく、職場の仲間にもこの便利なライブラリを配りたいときは、作成したモジュールを「エクスポート(書き出し)」しましょう。VBAの編集画面でモジュールを右クリックし、「ファイルのエクスポート」を選ぶと、.bas という拡張子のファイルが保存されます。

このファイルを仲間に渡して、相手のエクセルで「インポート(取り込み)」してもらえば、同じ機能が使えるようになります。あなたの作った便利なツールが、チーム全体の残業を減らすきっかけになるかもしれません。プログラミングは自分のためにやるのも楽しいですが、誰かの役に立ったときの喜びは格別です。共通関数ライブラリをきっかけに、VBAの奥深い世界をさらに探求してみてください。

カテゴリの一覧へ
新着記事
New1
Office Scripts
Office Scriptsの基本!企業環境で安全にExcel自動化を使うための利用制限と管理者設定
New2
Office Scripts
Office Scriptsの基本!TypeScriptの型注釈を理解してExcel自動化を安全に書く方法
New3
Office Scripts
Office Scriptsの基本!Excel自動化で使うgetValues・setValues完全ガイド【初心者向け】
New4
Office Scripts
Office Scriptsの基本!エラー表示とログ確認でExcel自動化を安全に進める方法
人気記事
No.1
Java&Spring記事人気No1
Excel VBA
Excel VBAモジュール共有術!複数のブックでマクロを使い回す最適構成
No.2
Java&Spring記事人気No2
Excel VBA
Excel VBAのプロジェクト構成とモジュール管理!標準・シート・ThisWorkbookの違い
No.3
Java&Spring記事人気No3
Excel VBA
個人用マクロブック(PERSONAL.XLSB)で作る最強の共通ライブラリ化ガイド
No.4
Java&Spring記事人気No4
Excel VBA
Excel VBAのループ処理を徹底解説!For文とDo Loopで繰り返しを自動化
No.5
Java&Spring記事人気No5
Excel VBA
VBAモジュールを安全にエクスポート・インポートする方法と注意点
No.6
Java&Spring記事人気No6
Excel VBA
ThisWorkbookに書くべき処理とは?VBAプロジェクトの正しい構成方法
No.7
Java&Spring記事人気No7
Excel VBA
標準モジュール・クラスモジュールの使い分けと追加方法を初心者向けに解説
No.8
Java&Spring記事人気No8
Office Scripts
Office Scriptsの基本!関数分割で読みやすいExcel自動化コードを設計する方法