残業を減らす!Officeテクニック

【Excel】Copilotで作ったマクロをボタン化! よく使う処理をすぐ実行する方法

よく使うマクロをExcelの機能として組み込もう

 Excelで同じ操作を何度も繰り返しているなら、マクロを作成しておくことで作業を効率化できます。ただ、よく使う処理は、特定のブックに保存しておくだけでなく、自分専用の機能としてExcelに組み込んでおきたいところです。

 以前に個人用マクロブック(PERSONAL.XLSB)に登録して、よく使うマクロを複数のブックから利用できる方法を紹介しましたが、今回は別の方法として、マクロを独立した「.xlam」ファイルにまとめて、Excelアドインとして扱う方法を紹介します。

よく使う機能を個人用マクロブック(PERSONAL.XLSB)に登録しておく方法もあるが、今回は「.xlam」ファイルに保存して、Excelアドインとして扱う方法を紹介する

 個人用マクロブックは、自分が使う複数のマクロを1つにまとめておく用途には便利です。一方、用途ごとにマクロを切り分けて管理したり、ほかのメンバーへ受け渡したりしたい場合は、独立したファイルのほうが扱いやすいでしょう。Excelアドインとして処理を独立させておけば、自作した機能を用途ごとに管理できます。

 さらに、アドインに登録したマクロをリボンのボタンから呼び出せるようにしておけば、普段使っているExcelの機能と同じ感覚で実行できます。

マクロはCopilotに作成してもらう

 今回は、選択したセル範囲の背景色を1行おきに設定し、行の高さを揃えるマクロをCopilotに作ってもらいます。あわせて、設定した書式を標準状態へ戻すマクロも用意します。

 VBAのコードは、Copilotに書いてもらいましょう。「処理の対象にするセル範囲」と「求める結果」を具体的に指示します。今回は、以下のようなプロンプトを入力しました。

Excelで使用するVBAマクロを作成してください。現在選択しているセル範囲を対象として、以下の処理を行ってください。

- 選択範囲の1行目は見出し行として扱い、背景色は変更しない

- 2行目は背景色の塗りつぶしをなしにする

- 3行目は背景色をグレーにする

- 以降は、背景色の塗りつぶしなしとグレーを1行おきに繰り返す

- 選択範囲に含まれるすべての行の高さを30に統一する

- 選択範囲以外のセルには変更を加えない

- 処理内容が分かるように、VBAコード内にコメントを付ける

- 書式設定を実行するマクロとは別に、選択範囲を標準状態に戻すマクロも作成する

標準状態に戻すマクロでは、以下の処理を行ってください。

- 背景色の塗りつぶしを解除する

- 行の高さをシートの標準行高(ActiveSheet.StandardHeight)に戻す

- 選択範囲のみを対象とする

ここでは、Web版のCopilotで上記のプロンプトを入力した
回答に、書式を設定するマクロと標準状態へ戻すマクロの2つが含まれていることを確認する

 Copilotから回答されたコードに「書式を設定するマクロ」と「標準状態へ戻すマクロ」の2つが含まれていることを確認します。ここでは、以下のような回答になりました。

書式設定を行うマクロ(交互色+行高30)

Sub FormatSelectedRange() Dim rng As Range Dim r As Long Dim i As Long ' 選択範囲を取得 Set rng = Selection ' 選択範囲が複数行ある場合のみ処理 If rng.Rows.Count < 2 Then Exit Sub ' 行ごとに処理 For i = 1 To rng.Rows.Count r = rng.Rows(i).Row Select Case i Case 1 ' 1行目は見出し行として背景色を変更しない ' 何もしない Case 2 ' 2行目は背景色なし rng.Rows(i).Interior.ColorIndex = xlNone Case 3 ' 3行目はグレー rng.Rows(i).Interior.Color = RGB(217, 217, 217) Case Else ' 4行目以降は背景色なしとグレーを交互に If (i Mod 2) = 0 Then ' 偶数行 → 背景色なし rng.Rows(i).Interior.ColorIndex = xlNone Else ' 奇数行 → グレー rng.Rows(i).Interior.Color = RGB(217, 217, 217) End If End Select ' 行の高さを30に統一 rng.Rows(i).RowHeight = 30 Next i End Sub

 処理(マクロ)の名前は「FormatSelectedRange」となっています。任意の名前に変更して構いませんが、動作確認やボタンとして登録する際の目安にするので、覚えておいてください。

 選択範囲が2行以上の場合にFor文で処理を実行し、Select Caseで1、2、3行目と、4行目以降の処理を切り替えています。セルの背景色はInterior.Colorプロパティで設定しており、「RGB(217, 217, 217)」の数値を変更すれば、別の色に変更可能です。行の高さは、RowHeightプロパティで「30」としています。

 変数[r]と、「r = rng.Rows(i).Row」は使われていないので、削除しても構いませんが、特に問題はないのでそのままにしておきます。

 設定した書式を元に戻す処理(マクロ)の名前は「ResetSelectedRange」です。こちらも覚えておきましょう。For文を利用して、選択範囲の背景色を「塗りつぶしなし」(xlNone)にして、行の高さを標準状態(StandardHeight)に戻しています。

標準状態に戻すマクロ(背景色解除+標準行高)

Sub ResetSelectedRange() Dim rng As Range Dim i As Long ' 選択範囲を取得 Set rng = Selection ' 選択範囲の各行を標準状態に戻す For i = 1 To rng.Rows.Count ' 背景色の塗りつぶしを解除 rng.Rows(i).Interior.ColorIndex = xlNone ' 行の高さをシートの標準行高に戻す rng.Rows(i).RowHeight = ActiveSheet.StandardHeight Next i End Sub

 Copilotの回答は毎回同じになるとは限りません。目的の処理を実現できるかどうかを確認しておきましょう。今回のコードの内容に大きな問題はなさそうなので、新規のExcelファイルを作成してVBAエディタに上記のコードを貼り付けて動作を確認します。

 標準モジュールを追加して、コードを貼り付ける手順は、以前の記事を参考にしてください。

新規のExcelファイルを作成し、[開発]タブの[Visual Basic]をクリックして、VBAエディタを起動しておく。[VBAProject(Book1)]を選択し、[挿入]-[標準モジュール]をクリックすると、標準モジュール(Module1)を追加できる。[VBAProject(PERSONAL.XLSB)]に追加しないように注意。Copilotが生成した2つのコードを貼り付ける
Excelの画面に切り替えて、任意のセル範囲を選択しておく
VBAエディタに切り替えて、[マクロの実行]をクリックする
書式を設定する処理(FormatSelectedRange)を選択して[実行]をクリックする
選択したセル範囲の書式が変更された
再び、VBAエディタに切り替えて[マクロの実行]をクリックし、書式を元に戻す処理(ResetSelectedRange)を実行する
標準状態の書式に戻った

 もし、意図通りの動作にならない場合は、不具合の内容と本来の動作をCopilotに指示して、コードを再生成してもらい、貼り付け直したうえで動作を確認しましょう。

「.xlam」形式で保存する

 処理の動作を確認できたら、コードを貼り付けたファイルを「Excelアドイン(.xlam)」形式として保存します。「.xlam」は、VBAのコードを保持できるExcelアドイン用のファイル形式です。通常の「.xlsx」ファイルとは異なり、Excelに追加する機能をまとめておく用途に利用できます。

 ファイルの種類として[Excel アドイン (*.xlam)]を選択すると、Excelアドインの保存先となるフォルダーに自動的に切り替わります。ファイル名は、アドインの有効・無効を切り替える際に表示されるため、「RowStyleTools.xlam」のように、用途がわかる名前を指定します。

VBAエディタの[上書き保存]をクリックする
ファイルの種類に[Excel アドイン (*.xlam)]を選択すると、自動的にExcelアドインファイルの保存場所(C:¥Users¥(ユーザー名)¥AppData¥Roaming¥Microsoft¥AddIns)に切り替わる。用途のわかる名前(ここでは「RowStyleTools」)を指定して[保存]をクリックする

 以上の操作で、マクロを入力したExcelアドインファイルが保存されました。ここまで操作していた新規ブックを、別途通常のExcelファイルとして保存する必要はありません。

アドインのマクロをボタンから実行できるようにする

 別のファイルを開いて、作成したアドインを利用してみましょう。ここでは、オリジナルのボタンを[ホーム]タブに追加しますが、専用のタブを用意してもいいでしょう。

[開発]タブにある[Excelアドイン]をクリックする
先ほど追加したアドイン(RowStyleTools)にチェックを付けて、[OK]をクリックする
画面上の変化はないが、アドインは有効になっている。リボンの何もないところを右クリックして、[リボンのユーザー設定]を選択する
コマンドの選択から[マクロ]を選択すると、利用できるマクロが一覧で表示される。作成した「FormatSelectedRange」と「ResetSelectedRange」が表示される。ここでは[ホーム]タブの右端に新しいグループを作成する。[ホーム]タブの一番下(ここでは「Excel Labs」)を選択して、[新しいグループ]をクリックする
[名前の変更]をクリックして、追加されたグループの名前を変更しておく。書式を設定するマクロ(FormatSelectedRange)を選択して[追加]をクリックする
追加されたマクロを選択して[名前の変更]をクリックする
任意のアイコンを選択して、表示名を変更する。[OK]をクリックする
アイコンと名前が変更された。続けて、書式をクリアするマクロ(ResetSelectedRange)を選択して、[追加]をクリックする
同様にアイコンと表示名を変更しておく。[OK]をクリックする

 [ホーム]タブに切り替え、追加したボタンを利用して書式を設定してみます。

書式を設定したいセル範囲を選択して、追加したボタン(背景色設定)をクリックする
書式が設定された

 「.xlam」にしておけば、普段編集するブックとは別に、特定の用途を持つ機能を1つのアドインとして切り分けて管理できます。自作する機能が増えてきた時に、用途ごとに整理したい場合にも使える方法です。