ファビコン。井の家紋。マクロの初期設定と基本 | エクセルマクロ(VBA)実践蔵(じっせんぐら)

前の項目 - 入力データとして扱えるファイル
次の項目 - ファイル参照-ファイル選択ダイアログ

マクロの初期設定と基本最終更新日:2023-05-24

はじめに

当サイトでは、Microsoft Office 365を使用して記載しています。

2023/5 Excel 2021にVersion Upしました。この影響により、2023/5以降の記事に関しましては、Excel 2021にて記載します。

このページの目次

マクロを有効にする - Microsoft Office 365

マクロを動作させるためには、エクセルのセキュリティ設定を変更する必要があります。

メニューバーから「ファイル」->「オプション」を選択し、セキュリティセンターを開きます。

Microsoft Excel セキュリティセンターの「セキュリティ センターの設定」を開きます。

エクセル(Excel)のセキュリティ センターの設定 Office Excel 365

セキュリティセンターのメニューから「マクロの設定」を開き、「警告を表示してすべてのマクロを無効にする」を設定します。

エクセル(Excel) マクロの設定

この設定をしておくと、マクロを含むファイルを開いたときに「警告」が表示されますので、「コンテンツの有効化」を選択することで、動作可能になります。

エクセル(Excel) マクロの警告

エクセルのセキュリティ設定 - Microsoft Office 2021

マクロを動作させるためには、エクセルのセキュリティ設定を変更する必要があります。

メニューバーから「ファイル」->「その他」->「オプション」を選択し、Excelのオプションを開きます。

「トラスト センター」(下図の①)の「トラスト センターの設定」(下図の②)を開きます。

エクセル(Excel)のトラスト センターの設定 Office 2021 Excel

トラストセンターのメニューから「マクロの設定」を開き、「警告を表示してすべてのマクロを無効にする」を設定します。

エクセル(Excel) マクロの設定

この設定をしておくと、マクロを含むファイルを開いたときに「警告」が表示されますので、「コンテンツの有効化」を選択することで、動作可能になります。

エクセル(Excel) マクロの警告

ダウンロードしたエクセルファイルのマクロ実行を許可するセキュリティ

コンテンツの有効化をクリックしてもマクロが無効となる場合は、下記の確認も行ってください。

ダウンロードしたエクセルファイルを右クリックし、全般タブの下にある、セキュリティの「許可する」チェックボックスにチェックを入れる。

他のコンピュータで作成したマクロ実行の許可

デフォルトの状態では、エクセルのメニューバーに「開発」がありません。追加するには、Excelのメニューバー「ファイル」->「オプション」を選択します。

リボンのユーザー設定を開き、「開発」にチェックを付けて、OKボタンで閉じます。

エクセル(Excel)VBA マクロ操作のための開発タブの追加

マクロを書く新規エクセルブックの作成

通常のエクセルファイル(.xlsx)を新規作成して開き、

「ファイル」->「名前を付けて保存」を選択し、「Excelブック(*.xlsx)」を「Excelマクロ有効ブック(*.xlsm)」に変更して保存します。

エクセル(Excel)VBA マクロ有効ブックの保存

マクロを動作させるボタンの作成(フォームコントロールボタン)

ボタンの付け方は、「開発」タブの挿入からフォームコントロールのボタンを選択します。

開発タブがない場合はこちら

エクセル(Excel)VBA ボタン(フォームコントロール)の追加

ボタンが押された時に動作させるマクロの登録は、コードを記述してから登録します。

ボタンにマクロの登録(フォームコントロールボタン)

「開発」タブから「Visual Basic」を開き、ファイル参照(コード)のようにコードを作成した後にエクセルの表面側に戻り、追加したボタンを右クリックして、マクロを登録します。

ボタンに表示させる文字列は、ボタンを右クリックして「テキストの編集」を選択すると、編集することができます。

エクセル(Excel)VBA ボタン(フォームコントロール)にマクロの登録

エクセル(Excel)VBA ボタン(フォームコントロール)にマクロを設定

シートオブジェクトと標準モジュールの追加

画像のSheet1("実行")は、シート名が「実行」のシートオブジェクトでこちらはエクセル側にシートを追加すると自動で追加されていきます。セルを参照する場合は、操作したいセルを持つシートオブジェクトにマクロコードを記載するとシート名を省略して記述できるので便利です。

標準モジュールにマクロコードを記述する場合は、追加する操作が必要です。標準モジュールのフォルダを右クリックして、「挿入」->「標準モジュール」を選択します。

エクセル(Excel)VBA 標準モジュールの追加

標準モジュールの名前の初期値は「Module1」「Module2」「Module3」… となります。

その名前を変更するには、プロパティウィンドウのオブジェクト名を変更することで、名前を変更することができます。プロパティウィンドウが表示されていない場合は、「表示」タブの「プロパティウィンドウ」を選択して、表示させてください。

エクセル(Excel)VBA 標準モジュールの名前の変更

FileSystemObject使用時の設定

Microsoft Visual Basic for Applicationsのメニューバー「ツール」から参照設定を選択する。

Microsoft Visual Basicの参照設定

アルファベット順に並んでいるため、表の中から「Microsoft Scripting Runtime」を探し、チェックを付けて、OKを選びます。

Scripting Runtime選択画面

ActiveXコントロールのリストボックスを追加

フォームコントロールとActiveXコントロールの違いは、設定値をマクロコードから操作できるかどうかになります。フォームコントロールは、設定値が固定で変更しない場合に使用します。変更する場合は、ActiveXコントロールになります。

エクセルファイルの開発タブの挿入からActiveXコントロールのリストボックスを選択する。

ActiveXコントロールのリストボックス

デザインモードに変更し、追加したリストボックスを右クリックして、プロパティを表示する。

デフォルトのオブジェクト名は、ListBox1になります。用途に合わせて名前を変えることをお勧めします。

ActiveXコントロールのリストボックス

MultiSelect設定のデフォルト値は、fmMultiSelectSingleで単一選択リストとなります。fmMultiSelectMultiを選択すると複数選択が可能になります。

ActiveXコントロールのリストボックス

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

ここまでやれば、ネットワークドライブ上に格納されているエクセルマクロを実行することができます。

前の項目 - 入力データとして扱えるファイル
次の項目 - ファイル参照-ファイル選択ダイアログ