Script事業案内エクセル以外ホームマクロVBAマクロVBA技術解説Excelアドインの作成と登録について最終更新日:2019-02-03Excelアドインの作成と登録についてExcelアドインの作成方法と登録方法についての手順と注意点、そして対応するマクロVBAコードについて紹介します。一般的なアドインの作成と登録についての概要の解説とVBAコードのサンプルになります。以下の項目に分けて解説しています。・アドインで保存するVBA・アドインを登録するVBA・アドインを有効化するVBA・アドインマネージャーを表示するVBA・アドイン配布時に自動登録するVBAExcelアドインについてアドインは、一般的にはプログラムに拡張した機能を追加するものを指します。エクセルに独自の機能追加するものがエクセルアドインになります。Excelのアドインファイルは、拡張子が.xlam(2003までは.xla)のファイルです。このアドインファイルをエクセルに登録することでアドインの機能が使えるようになります。アドインファイルのフォルダExcelアドインの既定のフォルダは、C:\Users\ユーザー\AppData\Roaming\Microsoft\AddInsになります。通常は、上記フォルダにアドインファイルを入れて使うものですが、他のフォルダでも構いません。Excelからアクセス可能なフォルダであれば、どこに置いても登録可能です。マクロ有効ブック(*.xlsm」で作成します。Functionこのように、スコープがPublicになるようにします。アドインの機能を呼び出す方法は何通りもあります。・リボンのアイコンをクリック・ユーザー定義関数ユーザー定義関数の作り方マクロを作成して、ボタンで一括処理...それほどではないが、関数だけではちょっと大変、そんな時は、ユーザー定義関数を使ってみましょう。上記は、引数を足し算して返すユーザー定義関数です。これは決まり文句です。ユーザー定義関数でフリガナを取得する(GetPhonetic)ワークシート関数の、「PHONETIC」では、他のソフト等からコピペした漢字は取得できません。そこで、VBAでユーザー定義関数を作成し、読みを取得できるようにします。A列はメモ帳よりコピペしました。B列に、ユーザー定義関数を指定して、振り仮名を取得しています。ユーザー定義関数でハイパーリンクのURLを取得(Hyperlink)ネットから、何らかの一覧をエクセルにコピペすると、文字列や画像等に、リンクの設定がくっついてきます。URLが表記されていれば良いですが、表示されていない事の方が多いでしょう。そこで、VBAでユーザー定義関数を作成し、URLを取得できるようにします。・ショートカットキーマクロをショートカットで起動(OnKeyメソッド)マクロVBAをショートカットで起動したい時には、Application.OnKeyメソッドを使います、通常マクロはボタンや図形に登録して起動しますが、これらをクリックするにはマウス操作が必要です。Application.OnKeyメソッドを使う事でショートカットで起動できるようになります。「値の貼り付け」をショートカットに登録(OnKey)コピーペーストの質問で、よく目にするのは、値の貼り付けが面倒だというものです。ショートカットが無いからのようです。ネットを調べて見たのですが、どれもしっくりこないので、作ってみました。いろいろな方法が考えられるのですが、簡単かつ直ぐに使えて、他の人にも配布可能なものが良いと思います。右クリックメニューの変更(CommandBars)セルを右クリックした時のショートカットメニューを変更します、右クリックメニューからマクロを起動できるようにすることで利便性が向上します・シートモジュールに以下を追加します。※参考ページはアドインとして作っているものではなく、呼び出し方法と実装の参考です。使い勝手が良く機能拡張しやすいのは、右クリックメニューを使う方法だと思っています。メニューの階層化もできますし、使えるアイコンも結構あります。自身のシートを表示することはできません。したがって、ユーザーの操作で自身のシートに記入してもらうような事はできません。他のブックに記入してもらい、その内容を自身のシートに転記して自身を保存(Save)することは可能です。名前を付けて保存します。アドイン(*.xlam)」を選択します。アドイン.xlamで保存後は、元のマクロ有効ブック.xlsmの画面に戻ります。下の、「設定(G)」をクリック「参照(B)」をクリックExcelアドインの既定のフォルダである、C:\Users\ユーザー\AppData\Roaming\Microsoft\AddInsが表示されます。他のフォルダにアドインファイルを置いた場合は、そのフォルダに移動します。登録するアドインファイルを選択して、「OK」アドインの一覧に登録したアドインが表示されます。チェックを付けて、「OK」これで登録したアドインが使用可能になります。※Excelのバージョンによっては、エクセルを再起動しないとアドインが有効にならない場合があります。確認の意味でも、エクセルを再起動して機能しているか確認してください。リボンへの登録アドインを起動する方法はいろいろあるので、特にリボンに登録する必要性はありませんが、リボンを使いたい場合は、以下のようにします。「新しいタブ(W)」をクリックして、ユーザー設定のタブを作成します。ある時は、そこに追加しても良い。アドイン内のプロシージャーが一覧表示されるので、プロシージャーを選択して追加ます。「名前の変更(M)」で、それぞれ分かり易い名前に変更してください。アイコンの変更や、既存リボンのカスタマイズは通常の方法ではできません。これらをやる場合はXMLで可能ではあますが、本サイトでは紹介していません。アドインで保存するVBAマクロ有効ブック.xlsmで作成したブックをアドイン.xlamとして保存するVBAです。SubSaveAsメソッドで、引数FileFormatにxlOpenXMLAddInを指定します。上の例では、マクロ有効ブック.xlsmと同じフォルダに保存していますが、アドインの規定フォルダに保存するには、そのフォルダをまず取得します。Sub取得したアドインの規定フォルダに保存してください。配布用に作成する場合を考慮すると、一旦は別フォルダに保存したほうが良いのではないかと思います。アドインの動作確認は、アドイン登録しなくてもアドイン.xlamを直接開くことで確認できます。アドインを登録するVBAアドインファイル.xlamをアドインの一覧に登録するVBAです。Subアドインの一覧に入れるだけでは有効化さないので、この時点では、まだアドインは使える状態になっていません。アドインに登録されている場合は、このVBAは無視されます。アドインを有効化するVBAアドインの一覧でチェックを付けて有効化するVBAです。Sub無効化する場合は、Falseを指定します。有効化されている状態でExcelが起動している場合は、アドインファイルが開かれています。アドインファイルを入れ替える場合は、一旦無効化してから入れ替えます。アドインマネージャーを表示するVBAリボンの「フアイル」→「オプション」→「アドイン」→「設定(G)」で表示されるダイアログを表示するVBAです。Sub「OK」が選択されたとしても、何が変更されたかは判別できません。これを判別するには、ダイアログの表示前後でアドインの一覧の変化を判定すれば可能です。以下では、アドインに登録されているファイルの一覧をイミディエイトウインドウに出力しています。名前だけなら、.Nameパスだけなら、.Pathアドイン配布時に自動登録するVBAアドインを配布時に、ユーザーの手間を省くために自動でアドイン登録できれば便利です。同一フォルダにあるアドイン.xlamを、アドインフォルダにコピーしてからアドイン登録&有効化するVBAです。SubVBScriptとある程度共通で使えるようにしています。・参照設定を使わない・オブジェクトの型を指定しないこれにより、ほとんどの部分はそのままコピペしてVBScriptで使えるようにVBAコードを書いています。'VBAの行をコメントアウトし、'VbScriptの行を生かすVBScriptはテキストファイルで、拡張子を.vbsとするだけです。起動もダブルクリック等で起動できますし、アプリが立ち上がらないので高速で処理完了します。本サイトではVBScriptの解説をしていませんので、あくまで補足としての記載になります。アドインを配布して使ってもらう場合は、VBScriptの方が起動は手軽で簡単かもしれません。処理速度も上記コードならほぼ一瞬で終わります。VBScriptでは細かいエラー処理を入れるのが面倒です。面倒なだけで入れられないことはありませんが、そのような必要性がある場合は、VBAの方がコードが書きやすくテストしやすいと思います。Excel起動と同時に機能追加するだけなら、個人用マクロブックでも良いことになります。そのような場合は、アドインと個人用マクロブックのどちらが良いということもないと思います。個人用マクロブックは名前が示す通り、基本的には個人で使うものです。したがって、配布する場合はアドインにしたほうが後々の保守性は良くなります。機能ごとにxlamを分けて配布すれば、ユーザーが個別にいつでも有効化・無効化できますので融通も効きます。Next)|VBA入門8.セルに文字を入れるとは(Range,Value)|VBA入門9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説10.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技ホームマクロVBAマクロVBA技術解説Excelアドインの作成と登録についてこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。GASスプレッドシート入門スプレッドシート応用GAS入門GAS応用ホームマクロVBAマクロVBA技術解説Excelアドインの作成と登録についてこのサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。