excel 错误运行时错误“1004”文档未保存,

xkftehaa  于 2023-08-08  发布在  其他
关注(0)|答案(6)|浏览(224)

我已经成功地运行了一个宏,它将我的Excel工作表保存为PDF格式,并向我的执行团队发送电子邮件。
我重新设计了它,创建了一个新表,并相应地更新了代码。

  1. Sub NewDashboardPDF()
  2. ' New Executive Daily Dashboard Macro
  3. '
  4. ' Create and email the Executive TEAM the Daily Dashboard.
  5. Dim strPath As String, strFName As String
  6. Dim OutApp As Object, OutMail As Object
  7. ' Create and email the Daily Report to Mitch/Dave/John/Jason ALL PAGES.
  8. Sheets("Executive Dashboard").Select
  9. strPath = Environ$("temp") & "\" 'Or any other path, but include trailing "\"
  10. strFName = Worksheets("Executive Dashboard").Range("V2").Value & " " & Format(Date, "yyyymmdd") & ".pdf"
  11. ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
  12. strPath & strFName, Quality:=xlQualityStandard, _
  13. IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
  14. 'Set up outlook
  15. Set OutApp = CreateObject("Outlook.Application")
  16. Set OutMail = OutApp.CreateItem(0)
  17. 'Create message
  18. On Error Resume Next
  19. With OutMail
  20. .to = xxx@testemail.com
  21. .CC = "steve@testemail.com"
  22. .BCC = ""
  23. .Subject = "Daily Dashboard"
  24. .Body = "All, " & vbNewLine & vbNewLine & _
  25. "Please see the attached daily dashboard." & vbNewLine & _
  26. "If you have any questions or concerns, please do not hesitate to contact me." & vbNewLine & _
  27. "Steve"
  28. .Attachments.Add strPath & strFName
  29. .Display
  30. .Send
  31. End With
  32. 'Delete any temp files created
  33. Kill strPath & strFName
  34. On Error GoTo 0
  35. End Sub

字符串
我得到的错误消息是运行时错误“1004”文档未保存。文档可能已打开或遇到错误。
当我调试时,下面的部分用最后一行上的箭头突出显示。

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


所有对旧表的引用都更新到了新表,所以我不相信这是问题所在。
另一方面,我很想知道如何创建这封电子邮件与我的默认电子邮件签名包括在内。目前它只是格式化为纯文本电子邮件。

r1zk6ea1

r1zk6ea11#

Document not saved错误消息是PDF文件不可写的线索,可能是因为它在PDF阅读器中打开。如果在尝试从VBA保存文档时打开PDF文档,则会重复此错误。
如果您没有打开文档,则可能是Windows无意中锁定了该文件。您可能需要重新启动电脑以清除锁定。
如果该文件尚不存在,则需要确认您实际上可以在该目录位置创建文件。
如果V2中的值包含最终使文件名无效的字符,例如\/:*?"<>|,您将遇到类似的错误。

w7t8yxp5

w7t8yxp52#

我看你的代码没有问题,你用的是哪个Excel Office?
要添加默认签名,请尝试以下操作:

  1. Dim Signature As String
  2. With OutMail
  3. .Display
  4. End With
  5. Signature = OutMail.HTMLBody
  6. 'Create message
  7. On Error Resume Next
  8. With OutMail
  9. .To = "xxx@testemail.com"
  10. .CC = "steve@testemail.com"
  11. .BCC = ""
  12. .Subject = "Daily Dashboard"
  13. .HTMLBody = "All, " & vbNewLine & vbNewLine & _
  14. "Please see the attached daily dashboard." & vbNewLine & _
  15. "If you have any questions or concerns, please do not hesitate to contact me." & vbNewLine & _
  16. "Steve" & vbNewLine & Signature
  17. .Attachments.Add strPath & strFName
  18. .Display
  19. ' .Send
  20. End With

字符串
另外,不要使用vbNewLine,尝试**& "<br>" &**

展开查看全部
djp7away

djp7away3#

请确保已创建文件将保存到的文件夹结构。您可以对解决方案进行编码,以检查文件夹是否已创建,如果没有,则可以创建它们。我以前遇到过类似的问题。检查以下代码中使用的文件夹路径是否存在:
strPath =环境$(“temp”)&“\”
如果它不存在,请创建它并重试。你可能会发现它工作得很好。

qqrboqgw

qqrboqgw4#

检查你的路径,把它拿出来,看看它做什么或玩它。我把一个电子表格放到一台新机器上,当我试图把它放到user\documents文件夹时失败了

oknwwptz

oknwwptz5#

我遇到了同样的问题,我认为问题(至少我是如何解决的)是通过改变windows中日期的格式。如果日期格式像DD/MM/YYYYMM/DD/YYYY(美国),宏认为它是一个文件夹。您必须将Windows设置中的日期格式设置为DD-MM-YYYY或类似格式。
Settings

dgiusagp

dgiusagp6#

我也遇到了同样的问题
这是我的准则

  1. ' Construct the PDF file name
  2. fileName = projectReference & " - Doc Transmittal #" & transmittalNumber & " - " & summaryName & " " & dateTimeStamp & ".pdf"
  3. ' Get the desktop path
  4. desktopPath = CreateObject("WScript.Shell").SpecialFolders("Desktop")
  5. 'Print the active sheet to PDF
  6. ActiveSheet.ExportAsFixedFormat _
  7. Type:=xlTypePDF, _
  8. fileName:=desktopPath & "\" & fileName, _
  9. Quality:=xlQualityStandard, _
  10. IncludeDocProperties:=True, _
  11. IgnorePrintAreas:=False, _
  12. OpenAfterPublish:=True

字符串
文件名字符串存在问题。在文件名中,我有这些字符“<<”和“>>”,这导致了错误“文档未保存”。我删除了字符,解决了这个问题。在文件名中查找任何特殊字符可能是一个好主意。希望这对你有帮助。

展开查看全部

相关问题