簡體   English   中英

訪問VBA Outlook Mailtiem.Body與MailItem.HTMLBody

[英]Access VBA Outlook Mailtiem.Body vs MailItem.HTMLBody

我正在嘗試使用自定義超鏈接填充一系列生成的電子郵件,但是在使超鏈接正確生成方面遇到麻煩。 我有一個用戶表單,允許創建報告的人在電子郵件正文中輸入文本字段。 該字段分配給表。

在“我的代碼”中,我將提取這些字段並解析為DATE和HYPERLINK之類的關鍵字,並用代碼生成的數字替換這些關鍵字。

創建超鏈接時,我將它們插入到主體字符串中,如下所示:

Function CreateHyperLink(HyperText, HyperLink) As String

    CreateHyperLink = "<HTML><BODY>"
    CreateHyperLink = CreateHyperLink & "<A href='" & HyperLink & "'>'" & HyperText & "'</A>"
    CreateHyperLink = CreateHyperLink & "</BODY></HTML>"

End Function

但是當我插入這些as(eBody是一個字符串數組)

 Set oMail = oApp.CreateItem(olMailItem)
 With oMail
    .To = t
    .CC = c
    .HTMLBody = eBody(i)
    .Subject = eSubject(i)
ETC.....

超鏈接可以正確創建,但是我從用戶輸入的文本中丟失了所有的間距和換行符。

如果相反,我使用

 Set oMail = oApp.CreateItem(olMailItem)
 With oMail
    .To = t
    .CC = c
    .Body = eBody(i)
    .Subject = eSubject(i)
ETC.....

我保留所有格式,但是丟失了超鏈接。 有兩全其美的解決方案嗎? 我不希望我的用戶必須以HTML形式輸入整個電子郵件。

方法.htmlBody的示例輸出(超鏈接有效,但缺少格式)

可以通過以下方式訪問該文件:'單擊此處以訪問報告'請使用過濾器選擇您的...

方法.Body的示例輸出(超鏈接無效但已格式化)

可以通過以下方式訪問該文件:

<HTML><BODY><A href='http://FILELOCATION'>'Click here to access the Report '</A></BODY></HTML>  " 

請使用過濾器選擇您的...

有沒有一種方法可以在.body中添加超鏈接,或者可以使用.HTMLbody保持格式?

如果我正確閱讀了您的描述,則說明您正在為每個超鏈接創建一組新的“ HTML”和“ BODY”標簽。 在生成的HTML電子郵件中,您應該只有1個HTML和1個BODY標簽。

我建議您將CreateHyperLink函數更新為此:

Function CreateHyperLink(HyperText, HyperLink) As String

    CreateHyperLink = "<a href='" & HyperLink & "'>'" & HyperText & "'</a>"

End Function

看一下電子郵件正文中間的范圍 我在這里的答案顯示了如何插入到現有.HTMLBody的中間。

正如喬什所說。 您必須將整個電子郵件包裝在一個HTML BODY 因此,我使用的是Josh剛才提到的內容,但是對您的Form設計進行了一些更改。

第一步。 轉到“表單”的“設計”視圖,確保將“文本框”(在其中輸入電子郵件的正文)設置為“ 純文本”而不是“ 純文本” 富文本格式會自動將數據包裝在適當的DIV標簽中。 因此,用於創建超鏈接的代碼將是,

Function CreateHyperLink(HyperText, HyperLink) As String
    CreateHyperLink = "<A HREF = '" & HyperLink & "'>'" & HyperText & "'</A>"
End Function

然后,在正文中,您只需使用(我不確定您是否正在預先格式化HTML,但這就是我要這樣做的方式。)

Set oMail = oApp.CreateItem(olMailItem)
With oMail
    .To = t
    .CC = c
    .HTMLBody = "<HTML><BODY><FONT FACE='Calibri'>" & eBody(i) & "</FONT></BODY></HTML>"
    .Subject = eSubject(i)
End With

記住 eBody(i)是僅解析關鍵字而不是格式的結果。 由於TextBox是一個RTF文本框,因此可以為您完成格式化!

暫無
暫無

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

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