Excelでチャット?冗談かと思ったら本当に動いた【VBAで学ぶ自作チャットシステム】
💡 Excelでチャット機能?それって冗談でしょ?
Excelでチャットができると聞いたら、多くの人が「何それ?」と驚きます。
でも実は、**VBA(Visual Basic for Applications)**を活用すれば、Excel上にちょっとしたチャットUIを作ることができるんです。
本記事では、以前Qiitaやnoteで紹介した内容をベースに、Zenn読者向けに分かりやすく・見やすく構成を整え直してご紹介します。
📌 本記事で使用する画像は、以前のnote記事や作成中のExcelプロトタイプのものを使用しています。
🎯 完成イメージ(まずは画像で全体像を)
この画像は、Excelのシートとチャット画面が同時に表示されている実際のUI例です。
右側にキャラクターも表示されており、視覚的にも親しみやすく仕上げられています。
🏗 Step 1: UserFormの作成
使用する部品:
- ListBox(メッセージ表示)
- TextBox(入力欄)
- CommandButton(送信ボタン)
VBAエディタでUserFormを挿入し、上記のようにパーツを配置してください。
ボタンのクリックイベントに以下のコードを記述:
Private Sub CommandButton1_Click()
If TextBox1.Text <> "" Then
ListBox1.AddItem "Me: " & TextBox1.Text
ListBox1.ListIndex = ListBox1.ListCount - 1 ' スクロール追従
Call AutoReply
TextBox1.Text = ""
End If
End Sub
🧠 Step 2: 簡易AIで自動返信を再現
返信があると、より「チャット感」が出てきます。
Sub AutoReply()
Dim reply As String
reply = "AI: " & Choose(Int((3 * Rnd) + 1), "こんにちは", "今忙しい?", "元気?")
ListBox1.AddItem reply
ListBox1.ListIndex = ListBox1.ListCount - 1
End Sub
※Choose関数を使ってランダムな返信を生成します。
📝 Step 3: チャットログを保存する(ファイル出力)
Sub SaveLog()
Dim i As Long
Open "C:\ChatLog.txt" For Append As #1
For i = 0 To ListBox1.ListCount - 1
Print #1, ListBox1.List(i)
Next i
Close #1
End Sub
これで、チャット履歴をテキストファイルに保存できます。
📊 Excel側でのログ表示
チャットのやり取りは、別シートにログとして記録されています。
- A列:ユーザーの質問
- C列:へたれくんの回答
- B列・D列:それぞれの日時
⚙ 発展編:返信パターンの拡張やUI改良
- 名前入力機能の追加:UserFormの初期化時にInputBoxで名前入力
- デザイン改良:背景色やフォントを工夫してアプリ感アップ
🎁 まとめ
Excel VBAでもここまで遊べる、という“意外性”こそが本プロジェクトの魅力です。
学びながら遊べて、実用性もある「自作チャットUI」をぜひ体験してみてください。
🙌 最後に
Zennでは、こうした「ちょっと変わったVBA活用術」もたくさん紹介されています。
「面白い!」「試してみたい!」と思ったら、ぜひLike & Scrapして応援してください!
💬 コメントやフィードバックも大歓迎です!
Discussion