「Becky!2」で自動生成のメールを作成する⑤

◆これまでに感じたこと
これまでにいくつかのツールを作成してみた結果、VBScript は日々の業務作業を効率化するうえで非常に有効な手段だと感じています。
特別な開発環境を用意せずに Windows 標準機能だけで自動化処理を実装できる点は、運用作業や定型業務との相性が良く、今後も活用の幅を広げながら理解を深めていきたいと考えています。
◆本コードで実現していること
今回は「お客様名」が含まれていた場合は〇〇〇が出力されていた場合は置換して出力する処理を追加致しました。
<顧客管理一覧>

<当日連絡の本文>

<メールの本文>

Option Explicit

Dim shell
Dim xl, wb, ws, text1, textAll, companyName, contactName
Dim textBody

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

' 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

' ★★★ ここから追加:G3 をチェックして本文を切り替える ★★★

If ws.Cells(3, 7).Value = "〇" Then

    Dim fso, filePath, ts, bytes, i, char, lines
    filePath = "C:\Users\sasio-tech.SASIO.JP\Documents\メール文自動作成\当日連絡_backup.txt"

    Set fso = CreateObject("Scripting.FileSystemObject")

    If fso.FileExists(filePath) Then

        ' バイナリとして読み込む
        Set ts = fso.OpenTextFile(filePath, 1, False)
        textBody = ts.ReadAll
        ts.Close


        ' --- ここから置き換え処理 ---
        lines = Split(textBody, vbCrLf)

        ' 1行目に 〇〇〇〇〇〇 が含まれていたら置換
        If InStr(lines(0), "〇〇〇〇〇") > 0 Then
            lines(0) = Replace(lines(0), "〇〇〇〇〇", text1 & "様")
            MsgBox lines(0)
        End If

        textBody = Join(lines, vbCrLf)
        ' --- ここまで ---


    Else
        textBody = "当日連絡.txt が見つかりませんでした。"
    End If

Else
    textBody = "ここに長文が表示されます"
End If

' ★★★ 追加ここまで ★★★

' Excel を閉じる
wb.Close False
xl.Quit

' 結合(B3 → 改行 → 長文)
' textAll = text1 & "様" & vbCrLf & vbCrLf & textBody
textAll = textBody

' クリップボードに本文を入れる(改行対応版)
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 "下書き保存されました"
タイトルとURLをコピーしました