【问题标题】:VBA Export Excel to PDFVBA 将 Excel 导出为 PDF
【发布时间】:2018-11-12 22:20:41
【问题描述】:

运行此宏时出现“1004”错误。

Sub macro_PDF()

ActiveSheet.ExportAsFixedFormat _
     Type:=xlTypePDF, _
     FileName:="/Users/username/Desktop/tests/filename.pdf", _
     OpenAfterPublish:=False
End Sub

错误图片

如果文件名是“PDF.pdf”,同样的代码可以正常工作。好像我只能导出名为“PDF.pdf”的 PDF。

下面的代码没有返回错误。为什么会这样?

Sub macro_PDF()

ActiveSheet.ExportAsFixedFormat _
     Type:=xlTypePDF, _
     FileName:="/Users/username/Desktop/tests/pdf.pdf", _
     OpenAfterPublish:=False
End Sub

【问题讨论】:

  • 所以添加另一段代码来重命名 pdf.pdf 导出后...
  • 我只用过 Windows,但你能像在 Mac 上那样用正斜杠开始文件路径吗?
  • @dwirony 正斜杠在 Mac 中工作正常。文件“PDF.pdf”是在宏运行之前手动创建的——而“Filename.pdf”不存在。文档属性中是否有任何可能导致错误的内容?
  • 你确定不只是 filename.pdf 在某个地方打开了吗?
  • @RichardBJ 最初我也考虑过这一点。我检查了一下,所有文件都关闭了

标签: excel vba pdf


【解决方案1】:

我已经在我的 PC 上运行/调试了几次,当然,文件名没有任何区别。 Filename.pdf 导出就好了。此错误似乎有两个潜在原因。 (1)是文件路径本身没有找到,其他(2)是文件已经存在。所以首先像这样检查:

Sub macro_PDF()
Filename = "c:/fmob/filename.pdf"
If Dir(Filename) <> vbNullString Then
    Kill Filename
End If
ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    Filename:=Filename, _
    OpenAfterPublish:=False
End Sub

我遇到了一种情况,即即使在删除了手写(即使用资源管理器)之后宏也无法写入文件,这似乎是由于 PDF Acrobat 未正确关闭所有文件句柄的某种错误造成的。大概重启会解决这个问题。

【讨论】:

  • 我真的很喜欢添加Dircommand 的想法。我复制并粘贴了您的代码以进行测试。 Dir 命令找不到文件——我猜是路由有问题——所以我添加了以下代码以确保我指向正确的文件。但是它仍然无法正常工作:-( Dim path As String Dim FileName As String path = ThisWorkbook.path FileName = "filename.pdf" If Dir(path &amp; FileName) &lt;&gt; vbNullString Then Kill (path &amp; "/" &amp; FileName) End If
  • 我发现在 Mac 中我必须将 Filename.path 中的斜杠 ("/") 替换为冒号 (":")。宏总是创建一个新的 PDF 或覆盖现有文件。 Kill Filenamenever 工作。我不明白为什么相同的代码会在目标文件夹中创建一个新文件,但如果该文件已经存在则找不到该文件。有什么帮助吗?谢谢
猜你喜欢
  • 2017-02-09
  • 2016-08-04
  • 2020-06-27
  • 2021-04-22
  • 2014-01-12
  • 2018-05-26
  • 1970-01-01
  • 2012-10-16
  • 2010-09-18
相关资源
最近更新 更多