Vba 如何删除地址?

Vba 如何删除地址?,vba,outlook,Vba,Outlook,我试图回复原始电子邮件发件人,并保留和回复原始电子邮件中抄送的所有电子邮件地址 Sub-estimate() Dim origEmail作为邮件项 Dim ReplyMail作为邮件项 Set origEmail=Application.ActiveWindow.Selection.Item(1) 设置replyEmail=Application.CreateItemFromTemplate(“C:\Utils\Outlook\u Templates\Estimate.oft”) replyEm

我试图回复原始电子邮件发件人,并保留和回复原始电子邮件中抄送的所有电子邮件地址

Sub-estimate()
Dim origEmail作为邮件项
Dim ReplyMail作为邮件项
Set origEmail=Application.ActiveWindow.Selection.Item(1)
设置replyEmail=Application.CreateItemFromTemplate(“C:\Utils\Outlook\u Templates\Estimate.oft”)
replyEmail.HTMLBody=replyEmail.HTMLBody&origEmail.Reply.HTMLBody
replyEmail.Subject=“RE:+origEmail.Subject
replyEmail.To=origEmail.Sender
replyEmail.CC=origEmail.CC+“;”+replyEmail.CC
回复邮件。显示
端接头
这是有效的。但是在CC中,我经常有一些联系人(例如:John Doe),我想在回复时删除这些联系人

我想保留除John Doe(抄送)之外的所有电子邮件地址


编辑:此外,当我用它回复电子邮件时,它会重复“收件人”和“抄送”中的电子邮件地址。这是因为我已经在“模板”的“收件人”中定义了一封电子邮件。无论如何,假设这是在“收件人”和“抄送”中重复“我的老板”。如何将其从“抄送”中删除?

这应该有效:

Sub estimate()
    Dim origEmail As MailItem
    Dim replyEmail As MailItem
    Dim s() As String
    Dim add As String
    Dim i As Integer

    Set origEmail = Application.ActiveWindow.Selection.Item(1)
    Set replyEmail = Application.CreateItemFromTemplate("C:\Utils\Outlook_Templates\Estimate.oft")

    s = Split(origEmail.CC & ";" & replyEmail.CC, ";")

    For i = LBound(s) To UBound(s)

        If InStr(1, s(i), "John Doe") = 0 Then
            add = add & ";" & s(i)

         End If
    Next


    replyEmail.HTMLBody = replyEmail.HTMLBody & origEmail.Reply.HTMLBody
    replyEmail.Subject = "RE: " + origEmail.Subject
    replyEmail.To = origEmail.Sender
    replyEmail.CC = add
    replyEmail.Display


End Sub
实际上,根据,您并不打算直接修改
.CC
属性:

此属性仅包含显示名称。该集合应用于修改抄送收件人

这样做的正确方法是:

Dim i尽可能长
'如果该地址可能出现多次,请从结尾处开始并向后操作
对于i=replyEmail.Recipients.Count到1步骤-1
如果LCase(replyEmail.Recipients(i.Name)=LCase(“John Doe”),那么
replyEmail.Recipients.Remove(i)
如果结束
下一个
回复邮件。显示

首先,我建议使用
MailItem
类的方法,而不是手动设置每个属性,该类从原始邮件中创建一个预先发送给原始发件人的回复。然后,您可以根据需要设置属性

其次,如果您需要设置收件人(更改、添加或删除),我建议您处理
收件人
集合。
MailItem
类的相应属性返回一个集合,该集合表示Outlook项目的所有收件人


最后,您可能会发现这篇文章很有用。

它很有效。谢谢还有一件事:当我用它回复电子邮件时,它会在“收件人”和“抄送”中重复电子邮件地址。这是因为我已经在“模板”中的“收件人”中定义了一封电子邮件,假设这是在“收件人”和“抄送”中重复“我的老板”。如何将其从“CC”中删除?