2013-02-26 60 views
1

在Excel文件OFT我有三列:Excel的VBA在Outlook中替換文本從Excel

A:  B:    C: 
UserName UsermailAddress RecordToBeDeleted 

我用下面的代碼在Excel中發送和從Outlook電子郵件(使用OFT文件)到各Excel電子表格B列中的電子郵件地址。

我的作品就在B列發送到每個郵件地址的代碼

我的問題是,在電子郵件的信息(OFT文件)我有兩個關鍵字(UserNameRecordToBeDeleted)我需要在與該郵件地址一起發送的每封電子郵件中進行替換。

代碼找到OFT文件中的兩個關鍵詞,但只刪除它們或用空條目替換它們。

我在做什麼錯誤,以便我可以從OFT郵件中的excel文件中替換單詞。

的VBA我在Excel表:

Sub RunEmails() 
    Dim i As Integer 
    Dim rngCell As Range 

    For Each rngCell In Range("A2", "A" & CStr(Cells(Rows.Count, "A").End(xlUp).Row)) 
     Call DoTest(rngCell.Offset(0, 1).Value, "[email protected]", rngCell.Offset(0, 2).Value, rngCell.Value) 
    Next rngCell 

End Sub 

Sub DoTest(EmailAddress As String, CCAddress As String, RecordToBeDeleted As String, UserName As String) 
    Dim oApp As New Outlook.Application 

    Dim olNewMail As Outlook.MailItem 
    Const Template As String = "D:\Documents\list\list-mail.oft" 

    Set olNewMail = oApp.CreateItemFromTemplate(Template) 

    olNewMail.Recipients.Add EmailAddress 
    olNewMail.HTMLBody = Replace(olNewMail.HTMLBody, ">UserName<", UserName) 
    olNewMail.HTMLBody = Replace(olNewMail.HTMLBody, ">RecordToBeDeleted<", RecordToBeDeleted) 
    olNewMail.VotingOptions = "Can distribution list be Deleted YES;Can distribution list be Deleted NO" 

    olNewMail.Send 
End Sub 
+0

我用了以下 - 它的工作! https://stackoverflow.com/questions/9147345/error-in-sending-mail-through-outlook-using-vb#new-answer?newreg=b23a1b588c6a4ba09b18ec756a34347b – 2015-08-05 06:16:14

回答

0

似乎在DoTestUserNameRecordToBeDeleted(和其他變量)的值是空的,因爲你從主程序調用子,但論據通過ByRef - 或通過參考,這是默認情況下。在你的情況下,這意味着你得到了你所擁有的 - 因爲它們沒有被聲明/分配在RunEmailsByRef值也是空的。在你的情況下使用ByVal參數:

Sub DoTest(ByVal EmailAddress As String, ByVal CCAddress As String, ByVal RecordToBeDeleted As String, ByVal UserName As String) 

瞭解更多:Passing Arguments by Value or by Reference

希望有幫助。

+0

感謝您的信息,我取代了線,但仍然獲得相同的結果,只是空的替換。我正在嘗試閱讀,但對VBA不太瞭解,這是我嘗試創建的第一個,所以現在只是試圖讓值被替換。 – BT7777 2013-02-26 19:07:45

+0

在這種情況下,很高興看到您的Excel文件 - 我不確定它是否從中正確讀取值。 – 2013-02-26 19:08:51

+0

感謝您的信息,我更換了該行,但仍然得到相同的結果,只是空的替換。我正在嘗試閱讀,但對VBA不太瞭解,這是我嘗試創建的第一個,所以現在只是試圖讓值被替換 – BT7777 2013-02-26 19:10:00