テンプレートを使用して Excel で動的電子メール ジェネレーターを構築する
Excel でテンプレートを使用して動的電子メール ジェネレーターを作成する
電子メールは、コミュニケーションのための最も強力なツールの 1 つです。電子メールの生成を自動化すると、時間を節約し、コミュニケーションの一貫性を確保できます。 Excel VBA では、テンプレートからパーソナライズされたメールを自動的に生成できる動的メール ジェネレーターを作成できます。
この記事では、Excel のテンプレートを使用して動的なメール ジェネレーターを作成します。
前提条件
- Microsoft Excel (2016 以降)。
- Excel の基本的な理解
- VBA エディタへのアクセス ([開発] タブが有効)。
ステップ 1:Excel ワークブックを設定する
データシートを作成する
- Data という名前の新しいシートを追加します。
- 受信者情報の列を作成します:
- 名
- 姓
- 電子メール
- 会社
- 部門
- 役割
- 会議の議題
- アクションアイテム
- 送信者名

テンプレート シートを作成する
- 「Template」という名前の別のシートを作成します。
- 次の列を作成します:
- テンプレート ID
- テンプレート名
- 件名
- メール本文
ステップ 2:電子メール テンプレートの作成
{{FirstName}}、{{Company}}、{{Department}}、{{Role}} などのプレースホルダーを使用して値を動的に挿入するメール テンプレートを作成します。
テンプレート 1:
自動オンボーディング メールのテンプレートを作成しましょう。
Dear {{FirstName}},
Welcome to {{Company}}! We're excited to have you on board.
Your account has been set up with the following details:
Department: {{Department}}
Role: {{Role}}
Best regards,
HR Team このテンプレートは自動オンボーディング メールに使用され、送信前にプレースホルダーが実際の値に置き換えられ、受信者ごとにパーソナライズされたメッセージが保証されます。
説明:
- {{FirstName}}:従業員の名のプレースホルダ。
- {{Company}}:会社名のプレースホルダ。
- {{Department}}:新しい従業員が割り当てられる部門のプレースホルダ。
- {{Role}}:従業員の職務のプレースホルダ。
テンプレート 2:
会議後のコミュニケーション用に別のテンプレートを作成しました。
Hi {{FirstName}},
Thank you for your time during our discussion about {{Meeting Topic}}. As discussed, I'm following up on {{Action Item}}.
Let me know if you have any questions.
Best regards,
{{Sender Name}}

ステップ 3:VBA コードを挿入する
VBA エディタを開くには:
- 開発者に移動します。 タブ>> Visual Basic を選択します。 .
- [挿入 ] をクリックします。>> モジュールを選択します .
- 次のコードをコピーして貼り付けます。

Option Explicit
Public Sub GenerateEmails()
Dim ws As Worksheet
Dim templateWs As Worksheet
Dim lastRow As Long
Dim i As Long
Dim emailBody As String
Dim subjectLine As String
Dim templateID As Long
' Set references to worksheets
Set ws = ThisWorkbook.Sheets("Data")
Set templateWs = ThisWorkbook.Sheets("Templates")
' Find last row with data
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Get template ID from user
templateID = InputBox("Enter the Template ID number:", "Select Template")
' Get template text
subjectLine = GetTemplate("Subject_Line", templateID)
emailBody = GetTemplate("Email_Body", templateID)
' Convert special characters to proper line breaks
emailBody = Replace(emailBody, "\n", vbNewLine)
' Create Outlook items
Dim outlookApp As Object
Dim emailItem As Object
Set outlookApp = CreateObject("Outlook.Application")
' Loop through each row of data
For i = 2 To lastRow
' Create new email
Set emailItem = outlookApp.CreateItem(0)
With emailItem
' Replace placeholders with actual data
.Subject = ReplaceFields(subjectLine, i, ws)
.Body = ReplaceFields(emailBody, i, ws) ' Changed from .HTMLBody to .Body
.To = ws.Cells(i, 3).Value ' Email address in column C
.Display ' Display email (change to .Send to send automatically)
End With
Next i
Set outlookApp = Nothing
End Sub
Private Function GetTemplate(field As String, templateID As Long) As String
Dim templateWs As Worksheet
Dim templateRow As Range
Set templateWs = ThisWorkbook.Sheets("Templates")
' Find the template row
Set templateRow = templateWs.Columns(1).Find(What:=templateID, LookIn:=xlValues, LookAt:=xlWhole)
If Not templateRow Is Nothing Then
Select Case field
Case "Subject_Line"
GetTemplate = templateWs.Cells(templateRow.Row, 3).Value
Case "Email_Body"
GetTemplate = templateWs.Cells(templateRow.Row, 4).Value
End Select
End If
End Function
Private Function ReplaceFields(text As String, rowNum As Long, ws As Worksheet) As String
Dim result As String
result = text
' Replace all field placeholders with actual data
result = Replace(result, "{{FirstName}}", ws.Cells(rowNum, 1).Value)
result = Replace(result, "{{LastName}}", ws.Cells(rowNum, 2).Value)
result = Replace(result, "{{Company}}", ws.Cells(rowNum, 4).Value)
result = Replace(result, "{{Department}}", ws.Cells(rowNum, 5).Value)
result = Replace(result, "{{Role}}", ws.Cells(rowNum, 6).Value)
result = Replace(result, "{{Meeting Topic}}", ws.Cells(rowNum, 7).Value)
result = Replace(result, "{{Action Item}}", ws.Cells(rowNum, 8).Value)
result = Replace(result, "{{Sender Name}}", ws.Cells(rowNum, 9).Value)
ReplaceFields = result
End Function ステップ 4:電子メール ジェネレーターを実行する
- 開発者について タブ>> [マクロ] をクリックします。 .
- [メールの生成 ] を選択します。>> [実行] をクリックします。 .

- メッセージ ボックス内>> テンプレート ID: を入力します。 1 .
- テンプレート 1 に従ってすべてのメールが送信されます。

- 再び実行します コード。
- メッセージ ボックス内>> テンプレート ID:2 を入力します。 .

テンプレート 2 に従ってすべてのメールが送信されます。

- 生成されたメールを送信する前に確認します。
- レビューが必要ない場合は、.送信を使用してください。 .Display の代わりにプロパティ すべてのメールを送信します。
カスタマイズのヒント
新しいプレースホルダー フィールドの追加:
- データ に新しい列を追加します。 シート。
- VBA コード内の ReplaceFields 関数を更新して、新しいフィールドを含めます。
- {{FieldName}} の形式を使用して、新しいプレースホルダーをメール テンプレートに追加します。
HTML 形式:
電子メール テンプレートに HTML 形式を含めることができます。
<p style="color: blue;">This text will be blue</p>
<strong>This text will be bold</strong> 結論
このチュートリアルは、事前定義されたテンプレートと VBA 自動化を使用して Excel で動的な電子メールの生成を設定するのに役立ちます。これらのテンプレートは、ビジネス コミュニケーション、クライアントのフォローアップ、自動リマインダーに使用できます。この電子メール ジェネレーターは基盤として機能し、特定の要件に基づいてカスタマイズできます。テンプレートを作成し、データシートを更新し、VBA コード内のプレースホルダーを追加するだけです。実稼働環境で使用する前に、必ず徹底的にテストしてください。
ソリューション付きの高度な Excel 演習を無料で入手しましょう!-
Excel で循環参照を見つける方法 (2 つの簡単なコツ)
ワークシートに Excel の数式を入力することがありますが、何らかの理由で機能しません。代わりに、Circular Reference に言及する警告プロンプトが表示されます .この記事では、Excel で循環参照を見つける方法について説明します。また、いくつかの美しい例と説明を使用して、修正または削除する方法についても学びます. 練習用ワークブック 次のワークブックをダウンロードして練習してください。 Excel での循環参照 数式が直接的または間接的に独自のセルに言及されている場合、循環参照 起こります。それは難しいかもしれません。計算時に、数式が独自のセルを使用すると、循環参照が
-
Excel で複数の基準に基づいてテーブルからデータを抽出する方法
必要なときにデータを抽出することは、スプレッドシートを使用する主な要因であり、Excel も例外ではありません。データを Excel に表形式で保存して、それらを抽出します。今日は、複数の基準に基づいてテーブルからデータを抽出する方法を紹介します。 まず最初に、例のベースとなるデータセットについて知りましょう。 ここには、映画のリストと、ジャンルと主演俳優、およびリリース年を含むテーブルがあります。このデータセットを使用して、複数の基準に基づいてデータを取得します。 これは、物事を単純にするための基本的なテーブルであることに注意してください。実際のシナリオでは、はるかに大規模で複雑な