こんにちは、あずるです。
ブログ運営や投資分析(競艇・パチスロ含む)をしていると、「ExcelのデータをAI(GeminiやChatGPT)に読み込ませて分析したい」という場面が多々あります。
ですが、そのたびに以下の手順を踏むのは非常に「面倒」ではありませんか?
- 「名前を付けて保存」を選択
- ファイルの種類から「CSV (UTF-8)」を探して選択
- ファイル名が重複しないように日付を手入力
- 保存

「これをワンクリックで終わらせたい」
そう思い立ち、Geminiにお願いして「現在開いているシートを即座にCSV化するVBAマクロ」を作ってもらいました。
今回は、コピペで使える「完成コード」の紹介と、それをAIに作らせた際の「指示(プロンプト)の反省点」を共有します。AI使いこなしの参考になれば幸いです。
成果物:コピペで使える「CSV自動出力マクロ」
まずは結論から。以下のコードを標準モジュールにコピペすれば、「現在のアクティブシート」を「日時付きのCSVファイル」として、「Excelと同じフォルダ」に一瞬で保存できます。
AI読み込み用にUTF-8形式で出力するようにしています。
Sub ExportActiveSheetToCSV()
' 変数宣言
Dim ws As Worksheet
Dim savePath As String
Dim fileName As String
Dim fullPath As String
' 対象は現在アクティブなシート
Set ws = ActiveSheet
' 保存先は、このExcelファイルと同じ場所
savePath = ThisWorkbook.Path
' ファイル名:元のシート名_日時.csv
' (例:PVデータ_20250207_1200.csv)
' ※日時をつけることで、過去のデータと混ざるのを防ぎます
fileName = ws.Name & "_" & Format(Now, "yyyymmdd_hhnn") & ".csv"
' フルパス生成
fullPath = savePath & "\" & fileName
' 画面更新と警告の停止(処理高速化と上書き確認ダイアログ防止)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
' 新しいブックにシートをコピー(元のブックをCSV化しないための処置)
ws.Copy
' CSVとして保存
' FileFormat:=xlCSVUTF8 (62) は Excel 2016以降で使用可能
' それ以前の場合は xlCSV (6) を使用してください
On Error Resume Next ' エラーハンドリング(保存キャンセル等)
With ActiveWorkbook
.SaveAs Filename:=fullPath, FileFormat:=xlCSVUTF8, Local:=True
.Close SaveChanges:=False
End With
On Error GoTo 0
' 設定を元に戻す
Application.DisplayAlerts = True
Application.ScreenUpdating = True
' 完了メッセージ
MsgBox "CSVファイルを出力しました:" & vbCrLf & fileName, vbInformation, "出力完了"
End SubGeminiが読み込みやすいファイル形式について、そのうち調べ記事にします。
使い方
- Excelで
Alt + F11を押してVBAエディタを開く。 - 「挿入」→「標準モジュール」を選択。
- 上記のコードを貼り付ける。
- 保存したいシートを開いた状態でマクロを実行。
これで、AIにデータを投げる準備が1秒で終わります。
VBAコードの動き解説
このコードの便利な点は3つです。
- 元データを壊さない:シートをコピーしてから保存するので、作業中のファイルは安全です。
- ファイル名自動化:
yyyymmdd_hhnn(年月日時分)が自動でつくので、上書き確認の手間がありません。 - AI連携に強い:Geminiなどが読みやすい「UTF-8」形式で出力されます。
・9行目を変えれば指定したワークシートに出来ます。
Set ws = ActiveSheet
↓
Set ws = Sheets(“シート名”)
実践記録:AIにコードを書かせたプロンプトの評価
さて、ここからが本題です。 このコードを作成するために、私がGeminiへ実際に送った指示(プロンプト)と、それに対するGeminiからの「辛口評価」を紹介します。
【75点】実際に送ったプロンプト(改善前)
私が最初に送ったプロンプトは以下の通りです。かなり「ざっくり」しています。
# 状況
・ブログ記事のPV数の推移を図るためにVBAを組んだ。
・Geminiに提出するのは「.csv形式」が望ましい。
・毎回手動で保存するのはめんどくさい# 最終目標
・第一優先:私の業務の効率化を果たし、スムーズにGeminiへ情報を提供できるシステムを構築する。# あなたのすること
・まず最初にVBAコードを教えてください。# 制約事項
・作動に必要なExcelのバージョンがあるのなら明記すること。
Geminiのペルソナを「Geminiを使いこなすアドバイザー」に切り替え、以下の質問を投げかけました。

・今回GeminiにVBAコードを用意してもらいました。
>私がしたGeminiへのプロンプトを評価してください。
>>今後に生かせるように**忌憚なく**評価してください。

総合点:75点(合格点ですが、AIの「推測」に頼った部分があります)
Geminiの評価は「75点」でした。 コード自体は動きましたが、プロの視点では「危険な指示」だったようです。
AIからの指摘「ファイル名と保存場所はどうする?」
Geminiから返ってきたフィードバック(Badポイント)は以下の通りです。
⚠️ 改善すべき点(Bad) 「保存場所」と「ファイル名」の定義不足
今回のプロンプトには「どこに保存するか」「どんなファイル名にするか」の指示がありませんでした。 私は気を利かせて「同じフォルダ」に「日時付きファイル名」で作成しましたが、気の利かないAIだと「デスクトップに test.csv という名前で上書き保存」するコードを書く可能性があります。これでは実務で事故(データ消失など)の元です。
これは痛い指摘です。 私は「いい感じにやってくれるだろう」と無意識に甘えていましたが、もしAIが「test.csv」で毎回上書きするコードを書いていたら、過去のログが消えていたかもしれません。
【100点】修正後の模範プロンプト

模範:「100点満点のプロンプト(要件定義部分)」
# 要件定義
- 対象データ: アクティブなシートのみ。
- 保存場所: このExcelブックと同じフォルダ(ThisWorkbook.Path)。
- ファイル名: 「元のシート名_yyyymmdd_hhmm.csv」として、日時のタイムスタンプを付与すること(上書き防止のため)。
- 文字コード: Gemini等のAIに読み込ませるため、「UTF-8」形式で保存すること。
- 挙動:
- 処理中は画面更新を停止し、高速化すること。
- 保存完了時にメッセージボックスを表示すること。
これなら、どのAIに頼んでも間違いなく「安全で使えるコード」が出力されます。
教訓:AIへの指示は「要件定義」が9割
今回の件で改めて痛感したのは、「AIのアウトプットの質は、こちらの要件定義(インプット)で決まる」ということです。
- 75点の指示:「めんどくさいからCSV保存したい」
- 結果:AIの「気遣い」に依存する。運が悪いと使いにくいコードになる。
- 100点の指示:「場所はここ、名前はこう、形式はこれ」
- 結果:一発で実務レベルのツールが完成する。
特にVBAのようなプログラムを書かせる場合、「ファイル名」や「保存場所」といった具体的な挙動は、AI任せにせず言語化する必要があります。
まとめ
今回は、Geminiを活用して業務効率化ツールを作った事例を紹介しました。
- ExcelデータをAI分析用にCSV化するマクロは超便利。
- AIへの指示は「推測」させない。「要件」をガチガチに固めるのがコツ。
こうした小さな時間の節約(時短)が重要です。浮いた時間で、また新しい分析や記事執筆に取り組んでいきます。
皆さんも、AIにコードを書かせるときは「要件定義」を意識してみてください。一発で思い通りのものができると、かなり気持ちいいですよ。


コメント