こんにちは、水野と申します。
VBAの勉強として今回はメールテンプレートの活用を目標として
ChatGPT先生と勉強してみました。
ChatGPTに質問
今回はChatGPTに以下のように投げてみました。
Excelのシート情報を特定のフォルダに格納されているメールテンプレート.oftの
本文に代入するVBAのコードを教えて!
そして返ってきたVBAコードが以下になりますので
その内2か所について触れていこうと思います。
Sub SendEmailUsingTemplate()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim TemplatePath As String
Dim ws As Worksheet
Dim Name As String
Dim DateValue As String
Dim MailBody As String
' Excelシートの設定
Set ws = ThisWorkbook.Sheets("Sheet1")
' データを取得
Name = ws.Range("A1").Value
DateValue = ws.Range("B1").Value
' Outlookアプリケーションの設定
Set OutlookApp = CreateObject("Outlook.Application")
' テンプレートのパス
TemplatePath = "C:\Path\To\Your\Template.oft"
' メールテンプレートを開く
Set OutlookMail = OutlookApp.CreateItemFromTemplate(TemplatePath)
' メールテンプレートの本文を取得
MailBody = OutlookMail.Body
' プレースホルダを変数で置き換える
MailBody = Replace(MailBody, "{Name}", Name)
MailBody = Replace(MailBody, "{Date}", DateValue)
' メールテンプレートの本文を更新
OutlookMail.Body = MailBody
' メールを表示(または送信するには .Send メソッドを使用)
OutlookMail.Display
' オブジェクトの解放
Set OutlookMail = Nothing
Set OutlookApp = Nothing
End Sub
①.CreateItemFromTemplate メソッド
文字通り過ぎて、ChatGPTに質問してみたのですが、
指定したテンプレートファイルから新しいアイテム(メール、予定表アイテムなど)を作成するために使用される
Microsoft Outlook の Application オブジェクトのメソッドのようです。
活用できそうなこと
私が普段はヘルプデスク業務をしているため、 問い合わせの内容ごとにテンプレートが存在することもあるのですが、”①問い合わせ内容②テンプレート格納先③宛先”の三つを別シートにまとめておいておけば、
問い合わせ内容を選択してツールを実施すると、適切なテンプレートと宛先をセットした状態でテンプレートを開くこともできそうですね。
②Replaceでメール本文に代入
MailBody = OutlookMail.Bodyでテンプレートの本文を引っ張ってきて、
そのうちプレースホルダを変数で置き換えていく作業。
Replaceってどう使うの?と思ったのでChatGPT先生に投げてみたところ、
以下の通りシンプルな回答が届きました。
Replace(expression, find, replace)
expression: 文字列を置き換える対象となる元の文字列です。
find: 置き換えたい部分文字列です。
replace: 置き換え後の文字列です。
活用できそうなこと
故障機器の情報を、担当部署へ連携するときに、 機器情報がまとまっている台帳から、シートの行と列を指定すれば、メーカー・設置箇所・所有者等の情報を
まとめてテンプレート転記できてコピペの手間が省けそう。
まとめ
今回はテンプレートの活用を目標としてみたのですが、
改めてVBAについて勉強するにあたって、.CreateItemFromTemplateなんてものがあることから、「どんな処理をしたいのか」が大切だと痛感しました。
普段自分がこなしている業務を見返して、効率化できる作業がないか目を光らせようともいます。