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

【Copilot for Microsoft 365】CopilotならExcelマクロも怖くない! ササっと生成

ワークシートに含まれるグラフをすべて図として保存するVBAを作ってもらった

CopilotはVBAのコードも生成できる

 以前の記事で、Microsoftの提供する生成AIの「Copilot」が、Excelでも使えることを紹介しました。

 ただ、現時点でCopilotが自動的に処理できるExcelの機能は限られており、すべてお任せできないのは事実です。といっても、中の人(AI)は、WebブラウザーのCopilotと同じように受け答えしてくれます。

 単純にExcelの使い方を質問して、回答を得ることができるわけです。例えば、関数名を思い出せなくても、やりたいことを伝えるだけで使い方も回答してくれます。

条件を指定してデータを数える関数について、ExcelのCopilotに質問した

 Excelの画面で完結できるのは便利ですよね。インターネットで情報を探し回る手間が省けるだけでも有用といえますが、もっと便利に使える可能性もあります。

 実は、CopilotはVBAのコードの生成も可能。サイドウィンドウに表示されたVBAコードをコピペして、自動化の処理を組み込めます。ある程度VBAの知識は必要になりますが、ゼロからコードを記述するより効率的でしょう。

 今回は、ファイル中のグラフをすべて図として保存するVBAのコードをCopilotに生成してもらい、実行するまでの流れを検証してみます。

CopilotにVBAコードを生成してもらう

 ここでは、ファイルに含まれるグラフを、すべて図として保存する処理をVBAで自動化してみます。Excelの操作としては、グラフを右クリックして[図として保存]を選択すればいいのですが、数があると大変ですよね。

 また、このような単純な処理でも、自分でコードを記述するのはもっと面倒です。Copilotに肩代わりしてもらいましょう。

「ワークシートに含まれるすべてのグラフを図として保存するVBAのコードを書いてください」と指示した
Copilotから回答されたVBAコード。[コピー]をクリックする

 以下は「ワークシートに含まれるすべてのグラフを図として保存するVBAのコードを書いてください」という質問に対して、Copilotが回答したコードです。解説文を削除して、改行を追加しています。

Sub SaveCharts()
    Dim sh As Worksheet
    Dim chrt As ChartObject
    Dim i As Integer

    i = 1
    For Each sh In ActiveWorkbook.Worksheets
        For Each chrt In sh.ChartObjects
            chrt.Chart.Export "C:\chart" & i & ".png", "PNG"
            i = i + 1
        Next
    Next

End Sub

 処理の流れは正しいようですが、Cドライブ直下の「chart」フォルダーに保存する前提のコードになっています。このままでは実行時にエラーが発生するはずです。デスクトップに用意したフォルダー(Excel_chart)に保存するように修正してもらいます。

続けて『デスクトップにある「Excel_chart」というフォルダーに保存するように修正してください』と指示した
Copilotが修正したVBAコード。[コピー]をクリックする

 以下は修正後のコードです。「Environ("USERPROFILE")」は「環境変数のユーザープロファイル」という意味。続けて「& "¥Desktop¥Excel_chart¥"」と記述されており、ログイン中のユーザーのデスクトップにある「Excel_chart」というフォルダーが、変数「filePath」にセットされていることがわかります。

Sub SaveCharts()
    Dim sh As Worksheet
    Dim chrt As ChartObject
    Dim i As Integer
    Dim filePath As String

    i = 1

    filePath = Environ("USERPROFILE") & "\Desktop\Excel_chart\"

    For Each sh In ActiveWorkbook.Worksheets
        For Each chrt In sh.ChartObjects
            chrt.Chart.Export filePath & "chart" & i & ".png", "PNG"
            i = i + 1
        Next
    Next

End Sub

 大きな問題はなさそうなので、VBAエディタに貼り付けて実行してみましょう。

マクロ有効ブックとして保存して実行する

 VBAコードを実行するので、ファイルを「Excelマクロ有効ブック」のXLSM形式として保存しておきます。VBAエディタで標準モジュールを追加して、Copilotが生成したコードを貼り付けて実行します。

 なお、[開発]タブが表示されていない場合は[Excelのオプション]から設定できます。詳しい手順はこちらの記事などを参考にしてください。

ファイルをExcelマクロ有効ブック(xlsm)として保存しておく。[開発]タブにある[Visual Basic]をクリックする
[挿入]-[標準モジュール]をクリックする
標準モジュールが追加される。先ほどコピーしたコードをペーストして実行する
ファイルに含まれるグラフが画像ファイルとして、デスクトップにある「Excel_chart」フォルダーに保存された

 もちろん、WebブラウザーのCopilotでも同様のコードを生成可能です。Excelの画面でCopilotが使えない場合は、Webブラウザーと切り替えながらの利用もおすすめです。