如何解决我可以从附件中的单元格添加文件路径吗?
我正在尝试编写代码来为工作表上的每一行数据创建一封电子邮件。在我添加“.Attachments.Add”行之前,它似乎工作正常。我的代码中遗漏了什么吗?或者我在尝试从单元格中识别文件路径时是否存在问题?
Sub CreateEmails()
Dim objOutlook As Object
Set objOutlook = CreateObject("Outlook.Application")
Dim objEmail As Object
Dim eBody As String
Range("A2").Select
Do Until IsEmpty(ActiveCell)
Set objEmail = objOutlook.CreateItem(olMailItem)
eBody = "<p>Hi " & ActiveCell(0,1).Value & ",</p>" _
& "<p>Message Body</p>" & _
"<p>Thank you!</p><br>"
With objEmail
.to = ActiveCell(0,2).Value
.Subject = ActiveCell(0,3).Value
.HTMLBody = "<html><head></head><body>" & eBody & "</body></html>"
.Attachments.Add ActiveCell(0,5).Value
.Display
End With
ActiveCell.Offset(1,0).Select
Loop
End Sub
解决方法
Attachments.Add 方法需要附件的来源,它可以是一个文件(由带有文件名的完整文件系统路径表示)或构成附件的 Outlook 项目。不清楚您的示例代码中传递了什么值,因此我建议更仔细地调试代码并确保传递有效值。例如:
Sub AddAttachment()
Dim myItem As Outlook.MailItem
Dim myAttachments As Outlook.Attachments
Set myItem = Application.CreateItem(olMailItem)
Set myAttachments = myItem.Attachments
myAttachments.Add "C:\Test.doc",_
olByValue,1,"Test"
myItem.Display
End Sub
,
而不是使用这样的东西,
ActiveCell(0,1).Value
你应该使用这样的东西。
ActiveCell.Offset(0,1).Value
最好不要使用 ActiveCell,为范围声明和使用变量。
Sub CreateEmails()
Dim objOutlook As Object
Dim objEmail As Object
Dim rng As Range
Dim eBody As String
Set objOutlook = CreateObject("Outlook.Application")
Set rng = Range("A2")
Do Until rng.Value <> ""
Set objEmail = objOutlook.CreateItem(olMailItem)
eBody = "<p>Hi " & rng.Offset(0,1).Value & ",</p>" _
& "<p>Message Body</p>" & _
"<p>Thank you!</p><br>"
With objEmail
.to = rng.Offset(0,2).Value
.Subject = rng.Offset(0,3).Value
.HTMLBody = "<html><head></head><body>" & eBody & "</body></html>"
.Attachments.Add rng.Offset(0,5).Value
.Display
End With
Set rng = rng.Offset(1,0)
Loop
End Sub
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。