※本ブログのページには広告主との提携による広告や宣伝、プロモーションが含まれます。当ブログを経由しての商品の購入や、サービス申し込みが発生すると、それらの提携企業からの成果報酬を受けとる場合があります。

VBA|ChatGPTで生成したVBAコードのマクロを検証する

はじめに

最近なにかと話題のChatGPTですが、以前から気になっていたので、当サイトの作業でも利用することもあります。

今回はそんなChatGPTを使ってVBAの課題にチャレンジしてみたいと思います。また、準備するデータなどもできるだけChatGPTを利用してどこまで便利なのか検証してみた内容となります。

現在のChatGPTで一体どこまでできるのかを検証する内容となりますので、ChatGPTをビジネスや作業にうまく活用できないかと考えている人は参考にしてもらえれば幸いです。

ChatGPTとは

日本でもニュースなどに取り上げられたり、インターネットの記事としてあつかわれたり、SNSで話題にあがることも増えてきたため、既にご存知の人も多いでしょうが、ChatGPTは、OpenAIという人口知能(AI)の開発・研究をおこなっているアメリカの会社が運営している対話型生成AIが利用できるサービスです。

現在有料版ではGPT-4が、無料版ではGPT-3.5が利用でき、具体的には以下のようなことができます。

ここには掲載されていないChatGPTの活用方法や、新たな機能をつかったデータ分析の実演などは、以下のサイトで分かりやすくまとめられていますので、ぜひ参考にしてください。

[PR]

データサイエンティストのための生成AI専門情報メディア

Ainova

上記のリンクをクリックすると外部サイトを表示します。

ChatGPTで生成するExcelマクロの作成について

ChatGPTでサンプルマクロを動かすためのデータリストを生成する

冒頭に記載したとおり、マクロで利用するデータリストについてもChatGPTに生成してもらいます。(無料版ではGPT-3.5を利用)

以下のようにプロンプト(命令文)を入力しました。

エクセルのワークシートにコピーができる、架空のデータリストを作成してください。
条件は以下のとおりです。
・20件のデータ
・見出しの行には左から社名、郵便番号、住所、電話番号、FAX番号、メールアドレス、代表者名を列ごとに区別する

ChatGPTからの返答は以下の画像のとおりです。

ChatGPTで架空の顧客データが生成された画像

20件のデータリストをあっという間に生成してくれました。ただ、指示の書きかたの問題か、GPT-3.5では対応が難しいのかは不明ですが、エクセルのシートに貼り付けると、各行の情報がA列に詰め込まれたものになっており、このままではすこし使い勝手が悪いです。

こちらの意図としては、A列に氏名、B列に郵便番号、C列に住所…としたかったのですが、何度か挑戦してもうまくいきませんでした。

ChatGPTが生成したデータリストをエクセルに貼り付けたときの画像
ChatGPTで生成された顧客データをエクセルのワークシートに貼り付けた画像

ChatGPTで生成するマクロの内容

前章でサンプルマクロにつかうためのデータリストをChatGPTで生成しました。ただ、すべてこちらの狙いどおりではなく、1列に各行の値が入ってしまってます。

せっかくなので、今度はChatGPTにさきほどのデータリストの各行を分割して、他のシートの各列にデータを記入するVBAコードを書いてと指示をだしてみたいと思います。

VBAコードを生成する以下のプロンプト(命令文)を入力しました。

作成してもらったデータを Excel のワークシート 1 に貼り付けました。
ワークシート 1 のデータリストの各行を”|” で始めて別の値に分割し、一つのセルに一つの値が入力したものをワークシート 2 に出力する VBA コードを書いて下さい。

ChatGPTからの返答は以下の画像のとおりです。

ChatGPTでVBAコードを生成した画像

ChatGPTが生成したVBAコード

Sub SplitData()
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim lastRow As Long
    Dim i As Long, j As Long
    
    ' ワークシートの設定
    Set ws1 = ThisWorkbook.Sheets("ワークシート1")
    Set ws2 = ThisWorkbook.Sheets("ワークシート2")
    
    ' データの最終行を取得
    lastRow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
    
    ' データを分割してワークシート2に出力
    For i = 1 To lastRow
        Dim rowData As Variant
        rowData = Split(ws1.Cells(i, 1).Value, "|")
        For j = LBound(rowData) To UBound(rowData)
            ws2.Cells(i, j + 1).Value = rowData(j)
        Next j
    Next i
End Sub

シンプルなコードが出力されました。また、このコードのあとには、こんなコメントもついていました。

「このコードは、ワークシート1の各行を”|”で分割して、それぞれの値を20行×7列の表としてワークシート2に出力します。必要に応じてワークシート名を正しいものにしますに変更してください。」

すこし日本語が気になりますが、ChatGPTからのコメントを原文のままで掲載しています。
忠告してくれていることを詳しくすると、エクセルファイルでワークシートを新規作成した段階ではシート名が「Sheet1」や「Sheet2」となっていますので、シートを指定しているVBAコードをそれにあわせて適宜書きかえるようにうながしてくれています。

つまづきやすい原因を予期したコメントがあるのって、初心者にとても親切だよね。

ChatGPTで生成したマクロの実行

それでは、VBEにこのコードを貼り付け、さらにChatGPTのコメントにあった対応を済ませてマクロを実行してみましょう。VBEの起動方法やマクロの実行方法がわからない人は過去の記事で紹介していますので、こちらの記事を参考にしてください。

VBEにコードを貼り付けた画像
ChatGPTで生成したVBAコードをVBEの標準モジュールに貼り付けた画像

ChatGPTからの忠告に従って、「ワークシート1」を「Sheet1」、「ワークシート2」を「Sheet2」にVBAコードを書きかえています。それ以外の部分については手を加えていない状態です。

ここまできたら、いよいよマクロの実行だよ。

VBEに貼り付けたマクロを実行した結果、ワークシート(Sheet2)には、以下の表が出力されました。

ChatGPTで生成したVBAコード(マクロ)を実行し、ワークシート(Sheet2)に出力された表の画像

上の画像はマクロを実行したあとのSheet2に出力された内容ですが、Sheet1のデータリストとちがって、それぞれの見出しと値がセルごとに分けられる処理が行われています。列のサイズを広くする、罫線をひくなどの体裁をととのえる処理はしていないので、見づらいようにみえますが、データリストをエクセルのワークシートに適した様式で作成するという目的は達成できました。

ChatGPTを使ったExcelマクロの作成の注意点

ここまでChatGPTをつかってデータリストの生成と、そのデータリストをエクセルのワークシートに貼り付ける処理をするマクロをつくってみました。今回のようなシンプルな処理であれば、ChatGPTとの会話は10回程のラリーしかおこなっておらず、労力や時間といったものをコストと考えると非常に優秀であると言えます。

ただし、そんな優秀なChatCPTであってもツールとしてまだまだ発展中であるわけですから、期待する結果をだすために注意しておかなければならない点があることも事実です。

では、どんなことに気をつければ良いかですが、求める結果に効率よく到達したいのであればロンプトにはいくつかコツがあることは知っておくべきでしょう。

ChatCPTのプロンプトのコツについて運営するOpenAIに掲載されている内容をもとに、以下のサイトの記事がわかりやすく解説してくれています。ChatCPTをもっとうまく利用したい人はぜひご覧になってください。

[PR]

OpenAIが推奨!ChatGPTを最大限活用するためのプロンプトの7つのコツ

上記のリンクをクリックすると外部サイトを表示します。

CHATGPTを使ってマクロをつくるまとめ

今回は話題の「CHATGPT」をつかって、マクロを作ってみたらどの程度の精度になるのかを検証してみました。検証の内容としては、データリストの生成と、そのデータリストをエクセルのワークシート形式に編集し、他のシートに出力するといったシンプルなマクロの作成でしたが、検証したみた感想をまとめます。

ChatGPTを使ったExcelマクロの作成のメリット

・データの準備もコードの生成もとにかく早い

プロンプト(命令文)しだいで求める期待値にたどり着くまでの対話時間は変わってくると思いますが、サンプルデータが欲しいとき、架空のデータの生成など、部分的な作業時間が短縮できる効果はかなり高いと言える結果でした。

・専門的な分野でなければマクロを構成するVBAコードの精度も十分

今回のような一般的な事務作業で処理をする場面では、書きかえが必要なものの、該当部分は汎用的に書かれたものを自分の環境に置きかえるためにしただけなので、VBAのコードの精度も十分な品質だと感じました。

さらに有料版のGPT-4で使える機能では、エクセルの売上データをつかって、データ分析などもできるため、企業におけるマーケティングの分野でも役立ってくれるでしょう。

ChatGPTでエクセルの売上データを分析する方法については、以下のサイトにて詳しく解説されています。ChatGPTをもっと身近にビジネスで利用したいと考えている人におすすめの内容となっています。

[PR]

Excelで管理している売上データの分析をChatGPTに丸投げしてみた

上記のリンクをクリックすると外部サイトを表示します。

ChatGPTを使ったExcelマクロの作成のデメリット

・ChatGPTに入力する情報は学習データとして使われる

ChatGPT は入力した情報を学習するためのデータにつかっているため、機密な環境でなにかの処理するプログラムの作成では、情報漏洩のリスクが全くないわけではないでしょう。

・ChatGPTの回答は完璧ではない

こちらはデメリットというより、リスクに近いかもしれませんが、これまでにも何度かお伝えしているとおりChatGPTはまだまだ発展中なので、実際のChatGPTの画面でも「ChatGPT は間違いを犯す可能性があります。重要な情報を確認することを検討してください。」との注意書きがあります。
生成されたすべての内容が正しいわけではないことは理解した上で利用する必要があるので、利用したときはかならず他の情報源との照合を用いるなどで取得した情報を精査する必要があります。

さいごに

今回はChatGPTをつかって、エクセルのマクロを作成してみたらどうなるのかを検証してみましたが、結論から言えば「ChatGPT」でマクロの作成をすることはできる。となるでしょう。

もちろん、きわめて専門的であることや、機密性の高い環境でうごくものをまったくの手を加えることをしないで。というわけにはいかないようですが、それらの環境で課題を解決するためのベースとなるマクロは作成できるため、ブラッシュアップが前提であれば十分な品質となります。

当サイトの特性上「ChatGPT」をVBAのコードを生成する方法で検証をしてみましたが、プログラミング以外にも、情報収集から文章の作成、翻訳、データ分析までこなしてしまうので、非常に汎用性が高く魅力的なツールだと言えます。

また、「ChatGPT」のさらなる進化で、今以上に誰にでもあつかいやすいものになっていけば、さらにたくさんのユーザーに利用されることも容易に想像ができます。それならば「ChatGPT」を高度に利用ができるスキルは自らの専門性をたかめる材料になるでしょう。

そんな「ChatGPT」や、その他の生成AIに関して体系的にわかりやすく、具体的な使用例をまとめた情報を発信しているメディアに「Ainova」があります。データサイエンティストとしてはたらく人や、これから生成AIについて学んでいきたい人におすすめです。

[PR]

Ainova

上記のリンクをクリックすると外部サイトを表示します。

コダマのもりブログはにほんブログ村に登録しています。
ブログの記事が役に立ったと感じて頂けたら、フォローお願いいたします。

コメント

タイトルとURLをコピーしました