◆これまでに感じたこと
これまでにいくつかのツールを作成してみた結果、VBScript は日々の業務作業を効率化するうえで非常に有効な手段だと感じています。
特別な開発環境を用意せずに Windows 標準機能だけで自動化処理を実装できる点は、運用作業や定型業務との相性が良く、今後も活用の幅を広げながら理解を深めていきたいと考えています。
◆本コードで実現していること
今回は、Becky! メールクライアントを操作して、下書きメールを自動的に作成する処理についての検証内容を紹介します。
本コードでは、Becky! を起動して新規メール作成画面を開き、差出人と件名を自動入力したうえで、Excel ファイルから取得した情報を元に本文を作成します。 Excel のシート1・B3 セルに記載されているお客様名を読み込み、その内容を固定文と結合した本文を生成し、クリップボード経由でメール本文欄へ貼り付ける流れとなっています。
今回の検証例では、Excel に「サシオテクノロジーズ様」が1件のみ記載されているケースを想定しており、その1件分のメールが自動的に作成されます。 作成されたメールは送信されることはなく、下書きとして保存されることを前提とした検証用のコードです。
<顧客管理台帳(sample例)>

<メールの出力結果>

Option Explicit
Dim shell
Set shell = CreateObject("WScript.Shell")
' Becky! を起動
shell.Run """C:\Program Files (x86)\RimArts\B2\B2.exe""", 1, False
' 起動待ち
WScript.Sleep 2000
' Becky! をアクティブにする(タイトルは環境に合わせて変更)
shell.AppActivate "Becky!"
WScript.Sleep 300
' メール(M) → 新規メールの作成(N)
shell.SendKeys "%m" ' Alt + M
WScript.Sleep 300
shell.SendKeys "c" ' 新規メールの作成(N)
WScript.Sleep 800
' 差出人を入力
shell.SendKeys "sasio@example.com"
WScript.Sleep 300
' 件名に移動(とりあえず TAB 1回にしてみる例)
shell.SendKeys "{TAB}"
WScript.Sleep 300
' 件名入力(検証用に英数字だけ)
shell.SendKeys "test_mail_subject_123"
WScript.Sleep 300
' 本文へ
shell.SendKeys "{TAB}"
WScript.Sleep 300
' ★ 本文に1文字入れる(重要)
shell.SendKeys " "
WScript.Sleep 200
' ★★★★★★★★★★★★★★★★★★★★★★★★★★★
' ★ ここから Excel の B3 を読み込んでクリップボードへ ★
' ★★★★★★★★★★★★★★★★★★★★★★★★★★★
Dim xl, wb, ws, text1, textAll
' Excel 起動
Set xl = CreateObject("Excel.Application")
xl.Visible = False
' ファイルを開く
Set wb = xl.Workbooks.Open("C:\Users\sasio-tech.SASIO.JP\Documents\メール文自動作成\作業環境リスト.xlsx")
' シート1 の B3 を取得
Set ws = wb.Sheets(1)
text1 = ws.Cells(3, 2).Value ' ← B3
' Excel を閉じる
wb.Close False
xl.Quit
' 結合(B3 → 改行 → 長文)
textAll = text1 & vbCrLf & "ここに長文が表示されます"
MsgBox textAll
' クリップボードに本文を入れる(改行対応版)
Dim clipCmd
clipCmd = "cmd /c echo(" & Replace(textAll, vbCrLf, "^& echo(") & " | clip"
shell.Run clipCmd, 0, True
WScript.Sleep 300
' 貼り付け(Ctrl + V)
shell.SendKeys "^v"
WScript.Sleep 300
' 下書き保存
shell.SendKeys "%f"
WScript.Sleep 300
shell.SendKeys "d"
MsgBox "下書き保存されました"
