【问题标题】:excel VBA Replace text in Outlook OFT file from excelexcel VBA 从excel替换Outlook OFT文件中的文本
【发布时间】:2013-02-26 18:41:24
【问题描述】:

在 excel 中我有三列:

A:        B:               C:
UserName  UsermailAddress  RecordToBeDeleted

我在 excel 中使用下面的代码从 Outlook(使用 OFT 文件)向 Excel 电子表格 B 列中的每个电子邮件地址发送和发送电子邮件。

我的代码可以发送到 B 列中的每个电子邮件地址

我遇到的问题是,在电子邮件(OFT 文件)中,我有两个关键字(UserNameRecordToBeDeleted),我需要在与该邮件地址相关的每封电子邮件中替换它们。

代码在 OFT 文件中找到两个关键词,但只是将它们删除或替换为空条目。

我做错了什么,所以我可以替换OFT邮件消息中excel文件中的单词。

我在 excel 表中的 VBA 是:

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, "JDoe@abc.com", 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

【问题讨论】:

标签: excel vba outlook outlook-2010


【解决方案1】:

似乎UserName(和其他变量)中UserNameRecordToBeDeleted 的值是空的,因为您从主过程调用sub,但参数是通过ByRef 传递的 - 或通过引用,这是默认设置。在你的情况下,这意味着你得到你所拥有的——因为它们没有在RunEmails 中声明/分配,ByRef 的值也是空的。在您的情况下使用 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

希望对您有所帮助。

【讨论】:

  • 感谢您的信息,我替换了该行但仍然得到相同的结果,只是空替换。我正在尝试阅读,但对 VBA 了解不多,这是我尝试创建的第一个,所以现在只是尝试获取要替换的值。
  • 在这种情况下,最好能看到您的 Excel 文件 - 我不确定它是否能正确读取其中的值。
  • 感谢您的信息,我替换了该行但仍然得到相同的结果,只是空替换。我正在尝试阅读,但对 VBA 了解不多,这是我尝试创建的第一个,所以现在只是尝试获取要替换的值
猜你喜欢
  • 1970-01-01
  • 2019-07-18
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2015-04-06
  • 1970-01-01
  • 1970-01-01
  • 2019-10-23
相关资源
最近更新 更多