当サイトでは、Microsoft Office 365を使用して記載しています。
2023/5 Excel 2021にVersion Upしました。この影響により、2023/5以降の記事に関しましては、Excel 2021にて記載します。
このページの目次
マクロを動作させるためには、エクセルのセキュリティ設定を変更する必要があります。
メニューバーから「ファイル」->「オプション」を選択し、セキュリティセンターを開きます。
Microsoft Excel セキュリティセンターの「セキュリティ センターの設定」を開きます。
セキュリティセンターのメニューから「マクロの設定」を開き、「警告を表示してすべてのマクロを無効にする」を設定します。
この設定をしておくと、マクロを含むファイルを開いたときに「警告」が表示されますので、「コンテンツの有効化」を選択することで、動作可能になります。
マクロを動作させるためには、エクセルのセキュリティ設定を変更する必要があります。
メニューバーから「ファイル」->「その他」->「オプション」を選択し、Excelのオプションを開きます。
「トラスト センター」(下図の①)の「トラスト センターの設定」(下図の②)を開きます。
トラストセンターのメニューから「マクロの設定」を開き、「警告を表示してすべてのマクロを無効にする」を設定します。
この設定をしておくと、マクロを含むファイルを開いたときに「警告」が表示されますので、「コンテンツの有効化」を選択することで、動作可能になります。
コンテンツの有効化をクリックしてもマクロが無効となる場合は、下記の確認も行ってください。
ダウンロードしたエクセルファイルを右クリックし、全般タブの下にある、セキュリティの「許可する」チェックボックスにチェックを入れる。
デフォルトの状態では、エクセルのメニューバーに「開発」がありません。追加するには、Excelのメニューバー「ファイル」->「オプション」を選択します。
リボンのユーザー設定を開き、「開発」にチェックを付けて、OKボタンで閉じます。
通常のエクセルファイル(.xlsx)を新規作成して開き、
「ファイル」->「名前を付けて保存」を選択し、「Excelブック(*.xlsx)」を「Excelマクロ有効ブック(*.xlsm)」に変更して保存します。
ボタンの付け方は、「開発」タブの挿入からフォームコントロールのボタンを選択します。
ボタンが押された時に動作させるマクロの登録は、コードを記述してから登録します。
「開発」タブから「Visual Basic」を開き、ファイル参照(コード)のようにコードを作成した後にエクセルの表面側に戻り、追加したボタンを右クリックして、マクロを登録します。
ボタンに表示させる文字列は、ボタンを右クリックして「テキストの編集」を選択すると、編集することができます。
画像のSheet1("実行")は、シート名が「実行」のシートオブジェクトでこちらはエクセル側にシートを追加すると自動で追加されていきます。セルを参照する場合は、操作したいセルを持つシートオブジェクトにマクロコードを記載するとシート名を省略して記述できるので便利です。
標準モジュールにマクロコードを記述する場合は、追加する操作が必要です。標準モジュールのフォルダを右クリックして、「挿入」->「標準モジュール」を選択します。
標準モジュールの名前の初期値は「Module1」「Module2」「Module3」… となります。
その名前を変更するには、プロパティウィンドウのオブジェクト名を変更することで、名前を変更することができます。プロパティウィンドウが表示されていない場合は、「表示」タブの「プロパティウィンドウ」を選択して、表示させてください。
Microsoft Visual Basic for Applicationsのメニューバー「ツール」から参照設定を選択する。
アルファベット順に並んでいるため、表の中から「Microsoft Scripting Runtime」を探し、チェックを付けて、OKを選びます。
フォームコントロールとActiveXコントロールの違いは、設定値をマクロコードから操作できるかどうかになります。フォームコントロールは、設定値が固定で変更しない場合に使用します。変更する場合は、ActiveXコントロールになります。
エクセルファイルの開発タブの挿入からActiveXコントロールのリストボックスを選択する。
デザインモードに変更し、追加したリストボックスを右クリックして、プロパティを表示する。
デフォルトのオブジェクト名は、ListBox1になります。用途に合わせて名前を変えることをお勧めします。
MultiSelect設定のデフォルト値は、fmMultiSelectSingleで単一選択リストとなります。fmMultiSelectMultiを選択すると複数選択が可能になります。
fmMultiSelectSingleを選択した場合、ユーザが選択したときのイベントはClick()イベントで取得できます。ユーザが1度、リスト項目を選択した場合、選択キャンセル操作はなく、リスト内のどれかは必ず選択中状態になります。初期状態として、リスト項目の先頭を選択中としておくと、未選択状態に対する考慮は不要となります。
fmMultiSelectMultiを選択した場合、ユーザが選択したときのイベントはChange()イベントになります。Click()イベントは発生しません。一度選択したリスト項目をキャンセルすることが可能なため、マクロを作成する場合は、考慮が必要です。
Office 2021に上げたら、ネットワークドライブ上でマクロの実行ができなくなりました。
作業PC上でマクロを実行するのでも構わなければ、作業PCにコピーして実行することで対処できます。
どうしても、ネットワークドライブ上でそのままマクロの実行を行いたい方は、ネットワークドライブのアドレス(\\192.168.XX.XX)をWindowsのhostsファイルに名前を定義して、エクセルの信頼できる場所に設定する必要があります。
あまり推奨されない操作だと理解した上で、どうしてもやりたい方は「hostsファイルへのサーバ登録」後にエクセルのオプション設定画面のトラストセンター設定にある「信頼できる場所」の「新しい場所を追加」ボタンを押し、\\〇○○\(hostsファイルに名前をつけたネットワークドライブ名)を設定してください。
また、「信頼できる場所」の自分のネットワーク上にある信頼できる場所を許可する⁽推奨しません⁾にチェックをつけます。
hostsファイルの格納場所
C:\Windows\System32\drivers\etc\hosts
一文を追加。XX.Xは環境に合わせてください。myNetworkDriveの部分は任意の名前です。
192.168.XX.X myNetworkDrive
ネットワークドライブの割り当てでも、hostsファイルにつけた名前を使用する。
\\myNetworkDrive\share
ここまでやれば、ネットワークドライブ上に格納されているエクセルマクロを実行することができます。