🌐

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