下午好,
我有一個 Outlook .msg 電子郵件保存在我計算機的本地檔案夾中。
有什么辦法可以用 VBA 中的任何單詞替換正文中的“AAAA”一詞?有什么辦法可以更改 To: 欄位?
目標是運行 Excel 表并創建模板訊息的副本,將 To: 欄位和模板中的一些單詞替換為 Excel 表中的資訊并保存。我們將手動發送后者。
我只需要 .msg 檔案修改代碼(到:欄位和正文替換)。回圈已經編碼。
太感謝了,
uj5u.com熱心網友回復:
您可以使用Application.Session.OpenSharedItem打開一個 MSG 檔案,修改回傳的MailItem物件(Subject// HTMLBody)Recipients,然后呼叫MAilItem.Save更新 MSG 檔案。
uj5u.com熱心網友回復:
Outlook 物件模型不提供開箱即用的任何東西來編輯 MSG 檔案。但是您可以自動化 Outlook 來創建專案,對其進行編輯,然后將其另存為模板。
使用Application.CreateItemFromTemplate方法從 Outlook 模板 (.oft) 創建新的 Microsoft Outlook 專案并回傳新專案。因此,您可以根據保存在磁盤上的模板創建一個新專案,然后替換您需要的所有內容。然后您可以將其另存為模板或將專案發送出去。在如何:基于模板創建新的 Outlook 郵件一文中了解更多資訊。
uj5u.com熱心網友回復:
如果有人需要,這是我使用的代碼。不要關注 for 回圈,而是關注 msg 的加載、編輯和保存方式。
在此示例中,msg 檔案中的一些單詞被替換為 excel 表中的值,以及 TO:(電子郵件接收者)。例如,msg 檔案中的單詞 AA 被 C7 單元格的值更改。
目的是創建一個帶有一些關鍵字(AA、BB、CC 等)的 msg 作為模板,復制該模板,用 excel 表中的單詞替換這些單詞并保存新的 msg 檔案。
Sub Recorrer()
Dim x As Integer
Dim fsObject As Object
Dim outApp As Object 'Outlook.Application
Dim outEmail As Object 'Outlook.MailItem
Dim outRecipient As Object 'Outlook.Recipient
On Error Resume Next
Set outApp = GetObject(, "Outlook.Application")
If outApp Is Nothing Then
MsgBox "Outlook is not open"
Exit Sub
End If
On Error GoTo 0
Set fsObject = CreateObject("Scripting.FileSystemObject")
' Set numcols = number of cols to be replaced.
NumCols = Range("C1", Range("C1").End(xlToRight)).Cells.Count
' Set numrows = number of rows of data.
NumRows = Range("A2", Range("A2").End(xlDown)).Rows.Count
' Select cell a1.
Range("A2").Select
' Establish "For" loop to loop "numrows" number of times.
For x = 1 To NumRows
fsObject.CopyFile ThisWorkbook.Path & "\" & Range("B" & x 1) & ".msg", ThisWorkbook.Path & "\Correos\" & Range("B" & x 1) & "_" & Range("C" & x 1) & ".msg"
Set outEmail = outApp.Session.OpenSharedItem(ThisWorkbook.Path & "\Correos\" & Range("B" & x 1) & "_" & Range("C" & x 1) & ".msg")
outEmail.Recipients.Add Range("A" & x 1)
For Z = 1 To NumCols
'MsgBox Cells(x 1, Z 2)
outEmail.HTMLBody = Replace(outEmail.HTMLBody, Cells(1, Z 2), Cells(x 1, Z 2))
Next
outEmail.Save
' Selects cell down 1 row from active cell.
ActiveCell.Offset(1, 0).Select
Next
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/484817.html
上一篇:根據單元格值插入/洗掉列
