错误运行时错误' 1004'文档未保存。

时间:2016-09-19 00:39:33

标签: excel vba excel-vba

我已经成功运行了一个宏,它将我的Excel工作表保存为PDF并通过电子邮件发送给我的执行团队。

我通过创建新工作表重新设计了它,并相应地更新了代码。

Sub NewDashboardPDF()

' New Executive Daily Dashboard Macro
'
' Create and email the Executive TEAM the Daily Dashboard.
    Dim strPath As String, strFName As String
    Dim OutApp As Object, OutMail As Object

' Create and email the Daily Report to Mitch/Dave/John/Jason ALL PAGES.
    Sheets("Executive Dashboard").Select
    strPath = Environ$("temp") & "\" 'Or any other path, but include trailing "\"
    strFName = Worksheets("Executive Dashboard").Range("V2").Value & " " & Format(Date, "yyyymmdd") & ".pdf"

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        strPath & strFName, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

     'Set up outlook
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
     'Create message
    On Error Resume Next
    With OutMail
        .to = xxx@testemail.com
        .CC = "steve@testemail.com"
        .BCC = ""
        .Subject = "Daily Dashboard"
        .Body = "All, " & vbNewLine & vbNewLine & _
                        "Please see the attached daily dashboard." & vbNewLine & _
                        "If you have any questions or concerns, please do not hesitate to contact me." & vbNewLine & _
                        "Steve"
        .Attachments.Add strPath & strFName
        .Display
        .Send
    End With
     'Delete any temp files created
    Kill strPath & strFName
    On Error GoTo 0

End Sub

我收到的错误消息是运行时错误' 1004'文档未保存。该文档可能已打开或可能遇到错误。

调试时,以下部分用最后一行的箭头突出显示。

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
strPath & strFName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

旧表的所有引用都更新为新表,所以我不相信这是问题。

另一方面,我很想知道如何使用我的默认电子邮件签名创建此电子邮件。目前它只是格式化为纯文本电子邮件。

4 个答案:

答案 0 :(得分:4)

Document not saved错误消息是PDF文件不可写的线索,可能是因为它在PDF阅读器中已打开。如果我在尝试从VBA保存文档时打开PDF文档,我可以重复该错误。

如果您没有打开文档,Windows可能会无意中锁定文件。您可能需要重新启动PC以清除锁定。

如果该文件尚不存在,那么您需要确认您是否可以在目录位置实际创建文件。

如果V2中的值包含最终使文件名无效的字符,例如\/:,{{1>,则会遇到类似的错误}},*?"<>

答案 1 :(得分:1)

我发现您的代码没有问题,您正在使用哪个Excel Office?

要添加默认签名,请尝试:

Dim Signature As String

With OutMail
    .Display
End With

Signature = OutMail.HTMLBody

'Create message
On Error Resume Next
With OutMail
    .To = "xxx@testemail.com"
    .CC = "steve@testemail.com"
    .BCC = ""
    .Subject = "Daily Dashboard"
    .HTMLBody = "All, " & vbNewLine & vbNewLine & _
                    "Please see the attached daily dashboard." & vbNewLine & _
                    "If you have any questions or concerns, please do not hesitate to contact me." & vbNewLine & _
                    "Steve" & vbNewLine & Signature
    .Attachments.Add strPath & strFName
    .Display
'        .Send
End With

也可以尝试 & "<br>" &

而不是使用vbNewLine

答案 2 :(得分:0)

确保已创建将文件保存到的文件夹结构。您可以对解决方案进行编码,以检查是否已创建文件夹,如果没有,则可以创建它们。我以前也有类似的问题。检查以下代码中使用的文件夹路径是否存在:

strPath = Environ $(“ temp”)&“ \”

如果它不存在,请创建它,然后重试。您可能会发现它可以正常工作。

答案 3 :(得分:0)

检查您的路径,将其取出并查看其作用或尝试使用它。我将电子表格放在新计算机上,尝试将其放在user \ documents文件夹中

时失败