0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VBA勉強 メールテンプレートを活用したい

Posted at

こんにちは、水野と申します。
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なんてものがあることから、「どんな処理をしたいのか」が大切だと痛感しました。

普段自分がこなしている業務を見返して、効率化できる作業がないか目を光らせようともいます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?