.发送不工作的vba,但.显示为

.发送不工作的vba,但.显示为,vba,excel,sendmail,Vba,Excel,Sendmail,我的“.send”不工作,但我的“.display”工作?我一直得到一个对象定义的错误。当我调试时,它突出显示“.send”。有什么建议吗 Sub SendEmails() Dim olApp As Outlook.Application Dim olMail As Outlook.MailItem For i = 8 To 10 Set olApp = New Outlook.Application Set olMail = olApp.CreateItem(olMailI

我的“.send”不工作,但我的“.display”工作?我一直得到一个对象定义的错误。当我调试时,它突出显示“.send”。有什么建议吗

Sub SendEmails()

Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem

For i = 8 To 10
    Set olApp = New Outlook.Application
    Set olMail = olApp.CreateItem(olMailItem)

    With olMail
    .BCC = Cells(i, 1).Value
    .Subject = Cells(i, 2).Value
    .Body = "Hello " & Cells(i, 3).Value & "," & vbNewLine & vbNewLine & Cells(i, 4).Value & vbNewLine & vbNewLine & Cells(i, 5).Value & vbNewLine & Cells(i, 6).Value
    .Attachments.Add "H:\Shared\Public\Focus 6\Private Equity\Send Emails\2017-01-18\EY - Capitalizing on Opportunities (PE O&G).pdf"
    .Send

    End With
Next

Set olMail = Nothing
Set olApp = Nothing

End Sub

正如@Nathan_Sav所提到的,您可能可以使用Outlook的安全功能。作为替代方案,您可以尝试使用
.SendKeys
函数……但请注意,这不是一种非常可靠的方法,尤其是当您需要其他人/其他机器尝试使用此宏时

但是如果你替换

.Send


它可能适合您。

.Display
将为您提供电子邮件视图。如果此步骤有效,则
.Send
将有效工作。使用
.Send
时,您将收到一个消息框,确认第三方程序正在尝试访问outlook(如果所有内容都配置正确)。若要修复未配置的问题,请打开工作簿,然后打开VBE(Alt+F11)。从此处转到工具-->引用,并取消选中标记为“缺少”的任何引用。如果可能,请查找相应的Outlook对象库并进行检查

Sub SendEmails()

Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem

For i = 8 To 10
    Set olApp = New Outlook.Application
    Set olMail = olApp.CreateItem(olMailItem)

    With olMail
    .BCC = Cells(i, 1).Value
    .Subject = Cells(i, 2).Value
    .Body = "Hello " & Cells(i, 3).Value & "," & vbNewLine & vbNewLine & Cells(i, 4).Value & vbNewLine & vbNewLine & Cells(i, 5).Value & vbNewLine & Cells(i, 6).Value
    .Attachments.Add "H:\Shared\Public\Focus 6\Private Equity\Send Emails\2017-01-18\EY - Capitalizing on Opportunities (PE O&G).pdf"
    .Display

    End With
Next

Set olMail = Nothing
Set olApp = Nothing

End Sub

大多数组织电子邮件都有一个强制性的文档/电子邮件标签策略,您必须在公共、限制、机密等选项之间进行选择。如果outlook设置为在发送电子邮件之前必须选择其中一个选项,则这可能是出错的原因。对于这个问题,我所知道的解决方案并不多,除了停用需要在发送电子邮件之前为其添加标签的插件。但可能其他人有其他建议。

您可能会在outlook中收到有关访问outlook的警告。谢谢,但你的建议似乎仍然不起作用。我收到以下错误消息:运行时错误'287:应用程序定义的或对象定义的错误。谢谢-为我提供了发现电子邮件进入我的垃圾邮件文件夹所需的线索。(谁知道我给我的电子邮件会被发送到垃圾邮件文件夹-arghhh。)系统锁定时,SendKeys“%S”不起作用。解决方法是将电子邮件保存到电子邮件文件夹中。在文件夹的add_item事件中,写入代码以发送它。因此,当项目添加到该文件夹时,该项目将自动发送
Sub SendEmails()

Dim olApp As Outlook.Application
Dim olMail As Outlook.MailItem

For i = 8 To 10
    Set olApp = New Outlook.Application
    Set olMail = olApp.CreateItem(olMailItem)

    With olMail
    .BCC = Cells(i, 1).Value
    .Subject = Cells(i, 2).Value
    .Body = "Hello " & Cells(i, 3).Value & "," & vbNewLine & vbNewLine & Cells(i, 4).Value & vbNewLine & vbNewLine & Cells(i, 5).Value & vbNewLine & Cells(i, 6).Value
    .Attachments.Add "H:\Shared\Public\Focus 6\Private Equity\Send Emails\2017-01-18\EY - Capitalizing on Opportunities (PE O&G).pdf"
    .Display

    End With
Next

Set olMail = Nothing
Set olApp = Nothing

End Sub