我的“.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
与
.SendKeys "%S"
它可能对你有用。
.Display
将为您提供电子邮件视图。如果这一步有效,那么 .Send
将有效地工作。使用 .Send
时,您将收到一个消息框,确认第 3 方程序正在尝试访问 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 设置为您必须在发送电子邮件之前选择这些选项之一,这可能是出现错误的原因。对于这个问题,我知道的解决方案并不多,除了停用要求您在发送之前标记电子邮件的插件之外。但也许其他人可能有其他建议。
我也面临这个问题,.display 进展顺利,但坚持 .send。
然后我意识到TO或CC或BCC中的地址应该用分号+空格(;)分隔,而不是逗号(,)。试试这个并检查一下,它应该有效。