残業を減らす!Officeテクニック
【Copilot for Microsoft 365】CopilotならExcelマクロも怖くない! ササっと生成
ワークシートに含まれるグラフをすべて図として保存するVBAを作ってもらった
2024年4月15日 06:55
以前の記事で、Microsoftの提供する生成AIの「Copilot」が、Excelでも使えることを紹介しました。
ただ、現時点でCopilotが自動的に処理できるExcelの機能は限られており、すべてお任せできないのは事実です。といっても、中の人(AI)は、WebブラウザーのCopilotと同じように受け答えしてくれます。
単純にExcelの使い方を質問して、回答を得ることができるわけです。例えば、関数名を思い出せなくても、やりたいことを伝えるだけで使い方も回答してくれます。
Excelの画面で完結できるのは便利ですよね。インターネットで情報を探し回る手間が省けるだけでも有用といえますが、もっと便利に使える可能性もあります。
実は、CopilotはVBAのコードの生成も可能。サイドウィンドウに表示されたVBAコードをコピペして、自動化の処理を組み込めます。ある程度VBAの知識は必要になりますが、ゼロからコードを記述するより効率的でしょう。
今回は、ファイル中のグラフをすべて図として保存するVBAのコードをCopilotに生成してもらい、実行するまでの流れを検証してみます。
CopilotにVBAコードを生成してもらう
ここでは、ファイルに含まれるグラフを、すべて図として保存する処理をVBAで自動化してみます。Excelの操作としては、グラフを右クリックして[図として保存]を選択すればいいのですが、数があると大変ですよね。
また、このような単純な処理でも、自分でコードを記述するのはもっと面倒です。Copilotに肩代わりしてもらいましょう。
以下は「ワークシートに含まれるすべてのグラフを図として保存する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)に保存するように修正してもらいます。
以下は修正後のコードです。「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エディタに貼り付けて実行してみましょう。