【问题标题】:How to Email a PDF generated from Excel VBA如何通过电子邮件发送从 Excel VBA 生成的 PDF
【发布时间】:2019-09-03 10:11:09
【问题描述】:

我已经构建了一些 VBA 脚本来将我的 Excel 报价文件转换为 PDF,然后通过电子邮件将其发送到给定的电子邮件地址。

当前脚本正在运行,并且能够生成 PDF 文档并将其保存到我提供的文件位置,但第二部分是创建电子邮件并准备发送它似乎不起作用。

我需要这个,以便我可以给客户报价,但也可以在文件中存储报价的副本。我可以从文件中附加给定的 PDF,但因为它不仅会被我自己使用,我想删除这一步。

我已经尝试了以下代码,并且 PDF 生成在此代码中和单独的情况下都可以正常工作。出现的错误是运行时 1004,它将这部分代码定位为包含错误:

Worksheets("Email").Range("A1:g70").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"S:\PDF Quotes\" & Format(Now, "DDMMYY-") & Worksheets("Email").Range("c12") & ".pdf", OpenAfterPublish:=True

尽管这部分单独工作并且仍在生成 PDF。请在下面查看我的完整代码:

Sub SetEmailToPDF()
ChDir "S:\PDF Quotes"
Worksheets("Email").Range("A1:g70").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"S:\PDF Quotes\" & Format(Now, "DDMMYY-") & Worksheets("Email").Range("c12") & ".pdf", OpenAfterPublish:=True

Dim OutLookApp As Object
Dim OutLookMailItem As Object
Dim myAttachments As Object

Set OutLookApp = CreateObject("Outlook.application")
Set OutLookMailItem = OutLookApp.CreateItem(0)
Set myAttachements = OutLookMailItem.Attachments

With OutLookMailItem
.To = "test.user@company.com"
.Subject = "Test Quote"
.Body = "this is a test email"
myAttachments.Add "S:\PDF Quotes\" & Format(Now, "DDMMYY-") & Worksheets("Email").Range("c12") & ".pdf"
'.send
.Display
End With

Set OutLookMailItem = Nothing
Set OutLookApp = Nothing

End Sub

正如解释我期望看到的情况如下:

1. PDF named 1`20419-companyname.pdf` is created and saved into file `S:\PDF Quotes\`
2. `120419-companyname.pdf` to be picked up and attached to an email in Outlook ready to send to `test.user@company.com`

【问题讨论】:

    标签: excel vba email pdf outlook


    【解决方案1】:

    我尝试测试您的上述代码并在此处遇到代码问题:

    myAttachments.Add "S:\PDF Quotes\" & Format(Now, "DDMMYY-") & Worksheets("Email").Range("c12") & ".pdf"
    

    我认为这是因为 myAttachments = OutLookMailItem.Attachments,并且“OutLookMailItem”已被考虑,因为您在 With 语句中使用了它。

    因此,如果您在上面的代码中将“myAttachments.Add”更改为“.Attachments.Add”,它应该可以工作。编辑:它应该如下所示:

    .Attachments.Add "S:\PDF Quotes\" & Format(Now, "DDMMYY-") & Worksheets("Email").Range("c12") & ".pdf"
    

    【讨论】:

    • Hello @SoopahTree 这样做也意味着这行:Set myAttachements = OutLookMailItem.Attachments 将更改为 Set Attachements = OutLookMailItem.Attachments
    • 嘿杰克,我已经更新了我的原始答案以澄清!
    猜你喜欢
    • 2017-09-14
    • 1970-01-01
    • 2011-04-24
    • 2023-03-06
    • 2011-03-21
    • 2016-01-18
    • 2015-06-21
    • 1970-01-01
    • 2018-09-19
    相关资源
    最近更新 更多