簡體   English   中英

VBA Outlook 郵件正文

[英]VBA Outlook Mail Body

在 VBA 腳本中,我正在嘗試編寫一個具有以下簽名的子函數

Sub(taskName As String , myGroup As String, myFile As String ,myPer As String, RelatedTasks() As String    )

 Dim olApp As Outlook.Application
 Dim m As Outlook.MailItem

 Set olApp = New Outlook.Application
 Set m = olApp.CreateItem(olMailItem)

 With m
   .display
   .To = "somewhere@someplace.com"
   .Subject = "Test Events"
   .HTMLBody/.body = ...    
End Sub

郵件正文如下:

大家好,

請查找以下信息。

任務任務名稱

相關任務:RelatedTasks()

文件:我的文件

: myPer

在 Sub 函數中,冒號左邊的模式總是不變的。右邊會根據函數的輸入而改變。

為此,我正在閱讀包含所需簽名的 Template.htm。

Template.htm 包含:

Hello All,

Please find the following information.

TASK: {{mytask}}

RELATED TASK:{{myRelatedTasks}}

FILE : {{myFile}}

PERSON : {{myPerson}}

在 VBA 代碼中,我正在替換所有字段。

我面臨的問題是 {{mytask}} 和 {{related tasks}} 也應該有一個 HTML 參考。 我已成功將鏈接添加到 mytask 。單擊郵件中的 mytask 將跳轉到相應的網絡鏈接。

<a href = "www.something.com&amp;id ={{taskID}}>
{{mytask}}.....<a href = "www.xxx.com&amp;id={{}}>{{myRelatedTasks}}

但由於它是一個數組,因此無法將相同的內容添加到相關任務中。

我的 VBA 代碼:

Option Explicit

Sub CreateNewMail()

 Dim olApp As Outlook.Application
 Dim m As Outlook.MailItem
 Dim sigPath As String, sigText As String
 Dim fso As Scripting.FileSystemObject
 Dim ts As Scripting.TextStream

 Dim t As String
 Dim r(5) As Variant

 t = "233444:dshfjhdjfdhjfhjdhfjdhfjd"


 r(0) = "122343:dsjdhfjhfjdh"
 r(1) = "323243:jfjfghfjhjddj"
 r(2) = "834783:gffghjkjkgjkj"

 Set olApp = New Outlook.Application
 Set m = olApp.CreateItem(olMailItem)

 sigPath = "C:\Users\Pavan-Kumar\Desktop\vbs\TestEvents.htm"

 Set fso = New Scripting.FileSystemObject
 Set ts = fso.OpenTextFile(sigPath)

 sigText = ts.ReadAll

 ts.Close

 Set fso = Nothing

 sigText = Replace(sigText, "{{mytask}}", t)
 sigText = Replace(sigText, "{{myRelatedTasks}}", Join(r, "<br>"))

 With m
   .display
   .To = "somewhere@someplace.com"
   .Subject = "Test Events"
   .HTMLBody = sigText

 End With 
End Sub

而且當我加入相關任務時,我希望它們以縮進的形式出現在另一個之下。 我嘗試將 "\\t" 作為分隔符,但沒有成功。

我目前在 Outlook 郵件中的 O/P:

在此處輸入圖片說明

這是我為解決同一問題所做的工作:

  1. 用你想要的格式寫一封電子郵件
  2. 在電子郵件中,對字段使用唯一的內容,例如{{recipient name}}
  3. 將電子郵件另存為 HTML。 這現在是您的電子郵件正文模板。 您可以為不同的情況保留幾個不同的模板。
  4. 在 VBA 中,打開相應的模板文件並將整個內容讀入一個字符串。
  5. 使用 VBA 命令Replace ,填寫您的字段。 例如strHTMLTemplate = Replace(strHTMLTemplate, "{{recipient name}}", "Jane Doe")
  6. 將最終字符串分配給 .htmlBody

對於相關任務,您似乎只希望它們位於一行中。 在這種情況下,只需在您的模板中創建一個“字段”, {{RelatedTasks}}然后像這樣strHTMLTemplate = Replace(strHTMLTemplate, "{{RelatedTasks}}", Join(RelatedTasks, ", "))

如果您想花哨,可以編寫將字符串數組轉換為 html列表表格的函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM