【ExcelVBA】ChatGPTにコード作成＆解説させる際のポイント（初心者向け）

:::note info
超初心者向け記事です。
事務職だけど「ChatGPTで業務効率化しろ！」って言われた方々向け（私もです）
:::
本記事では「ChatGPTにExcelVBAコードを作成させる場合にポイントとなる質問方法・キーワード」について、実例を交えて紹介します。

## ChatGPT運用サンプル
まずは↓のリンクから実例をご覧ください。（AIとの問答もシェアできるんですね～）
[ChatGPTにExcelVBAのサンプルコード作成＆解説させてみた例](https://chat.openai.com/share/a6234328-8714-4aad-aa1b-decc02e40527)
## AIによる質疑回答
上記実例でのChatGPTへの質問文はとてもシンプルです。

>ExcelVBA
サンプルコード作成
20行以上
処理内容不問
変数名は日本語

すると、今回は以下のような返事が返ってきました。
※同じ質問文でも、質問の度に違う答えが返ってきます。


>Excel VBAのサンプルコードを提供します。このコードは20行以上のサンプルで、変数名は日本語です。処理内容は、単純なエクセルセルへのデータ入力とセルのフォーマット変更です。

```vb
Copy code
Sub サンプルコード()
    Dim シート As Worksheet
    Dim セル As Range
    Dim 値1 As Integer
    Dim 値2 As Integer
    Dim 結果 As Integer
    
    ' シートを選択
    Set シート = ThisWorkbook.Sheets(1)
    
    ' 値を設定
    値1 = 10
    値2 = 20
    
    ' セルに値を入力
    Set セル = シート.Cells(1, 1)
    セル.Value = 値1
    
    Set セル = シート.Cells(2, 1)
    セル.Value = 値2
    
    ' セルのフォーマットを変更
    シート.Cells(1, 1).Font.Bold = True
    シート.Cells(1, 1).Interior.Color = RGB(255, 0, 0)
    
    ' 2つの値を加算
    結果 = 値1 + 値2
    
    ' 結果を表示
    Set セル = シート.Cells(3, 1)
    セル.Value = "結果:"
    
    Set セル = シート.Cells(3, 2)
    セル.Value = 結果
End Sub
```
>このコードは、ワークブックの最初のシートに値を入力し、セルのフォーマットを変更し、2つの値を加算して結果を表示する単純な処理を行います。変数名は日本語で記述されています。

VBAコードを作成させるだけであれば、極論、頭に`ExcelVBA`だけ付けて思うままに処理内容を記述すればコード化して貰えると思います。

今回のポイントは**変数名は日本語**と指示している点です。

:::note warn
本来、変数名には英語を使用することが一般的であり、他人とコードを共有する場合に理解しやすい命名規則を採用することが推奨されます。
:::

が、変数名が日本語であっても動作自体には基本的に影響がありませんし、
特に初心者にとっては、**日本語で書ける部分は日本語で書かれている方が理解が早くなる**と思われます。（私自身、個人開発では変数名を日本語にしているのは内緒の話。）
参考リンク：[Excel作業をVBAで効率化「VBAの関数名や変数名に日本語を使ってよい」](https://vbabeginner.net/japanese-code/)
## 追加質問
ChatGPTの最大の長所は、質問後にさらに**追加で質問が出来る**所にあると思います。
先ほどの質疑回答例では、返答が返ってきた後に、
>解説

と、さらに追加で質問しています。
これにより、先ほど作成されたコードについて、ChatGPT自身が詳しく解説してくれます。
>このExcel VBAのサンプルコードは、20行以上のコードで、基本的な操作を行うものです。以下にコードの各部分を解説します。

>Sub サンプルコード():
この行は、サブルーチン（マクロ）の開始を示します。

>Dim シート As Worksheet:
シート という変数を宣言し、データ型として Worksheet を指定しています。これはワークシートを操作するための変数です。

>Dim セル As Range:
セル という変数を宣言し、データ型として Range を指定しています。これはエクセルのセルを操作するための変数です。

>Dim 値1 As Integer と Dim 値2 As Integer:
値1 と 値2 という変数を宣言し、データ型として Integer を指定しています。これらは整数型の変数で、値を格納します。

>Dim 結果 As Integer:
結果 という変数を宣言し、データ型として Integer を指定しています。これは計算結果を格納するための変数です。

>Set シート = ThisWorkbook.Sheets(1):
ThisWorkbook を使用して、現在のワークブックを取得し、その最初のシートを シート 変数に割り当てます。

>値1 = 10 と 値2 = 20:
値1 と 値2 に整数値を代入します。

>セルへの値の入力:
セル 変数を使用して、シートの特定のセルに値を入力します。

>セルのフォーマット変更:
シート.Cells(1, 1).Font.Bold および Interior.Color プロパティを使用して、セルのフォーマットを変更します。1行1列のセルのフォントを太字にし、背景色を赤に設定します。

>結果 = 値1 + 値2:
値1 と 値2 の値を加算し、その結果を 結果 変数に格納します。
>結果の表示:
シート.Cells(3, 1) と シート.Cells(3, 2) を使用して、3行1列および3行2列のセルに結果を表示します。

>End Sub:
サブルーチンの終了を示します。

>このコードは、Excel VBAを使用してワークシート上で基本的な操作を行う例です。変数名は日本語で表記されており、日本語のコメントを追加することも可能です。

さらに、必要に応じて`簡潔に`や`～について詳しく`等の指示を加えると、より理解が深まると思います。
## （参考）表形式データをChatGPTに認識させる方法
「Excelの表データを直接ChatGPTに見せたい」と思った方へ。
以下のリンクより実例をどうぞ。
[CSVデータ形式により表形式データを認識させた例](https://chat.openai.com/share/3ee20ac2-30b8-477c-96e4-7d200d98ec51)  

ChatGPTが認識できるのは「テキスト形式のデータ」のみです。
つまり、表形式データを表したテキスト形式データ＝**CSV形式のデータに変換して質問文に追加**することで、ChatGPTに表形式データを認識させることが出来ます。

:::note
CSV形式のデータとは（概要）
列をカンマ等の区切り文字、行を改行コード（視認不可）で区切ったテキスト形式データ
:::

対象のExcelファイルを開き、「ファイル」タブ→「名前を付けて保存」→ファイルの種類を「CSV（コンマ区切り）」と指定して保存し、当該ファイルをExcelからではなくメモ帳から開く（ファイル上で右クリック→プログラムから開く→メモ帳）ことで、CSV形式のデータを得ることが出来ます。
## 雑感
冒頭の「ChatGPTで業務効率化しろ！お前にGPTが使えるか！」的な上司からの指示に対し、
私は「分からぬ！だが共に生きることはできる！」的な答えを返したものです…。（feat.もののけ姫）

実際問題、「ある特定の事務自体を直接ChatGPTで解決（効率化）する」というのは、まだまだ現実的ではないように感じます。（組織向けにカスタムされたAIを導入することを別として）
一方で、「ChatGPTの扱いに慣れることによる事務員各自のスキル向上」は可能だと思います。特にPC操作やプログラミング関係の分野で有効です。

私の場合、「業務のため」というよりは「個人的な趣味の一環」としてChatGPTを利用していた所、試行錯誤を通じてかなりリテラシーを高めることが出来ました。
まずは堅く考えずに、遊びのつもりでChatGPTに触れてもらうのが良いと思います。