【问题标题】:VBA Export to PDF produces a very large PDF FileVBA 导出到 PDF 会生成一个非常大的 PDF 文件
【发布时间】:2017-01-10 21:04:39
【问题描述】:
ActiveSheet.ExportAsFixedFormat _
    Type:=xlTypePDF, _
    FileName:="file_path", _
    Quality:=xlQualityMinimum, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False

我正在尝试使用 VBA 将 Excel 工作表导出为 PDF。 excel 表中填满了时间序列图表。 VBA 创建的 PDF 对电子邮件来说太大(90mb)。有没有办法导出到更小的文件?我尝试将质量更改为“xlQualityMinimum”,但文件大小没有变化。

或者,我可以用 C# 压缩 PDF。但我找不到免费的方法来做到这一点。如果无法在 VBA 中输出较小的文件,有人知道如何在 C# 中进行压缩吗?

【问题讨论】:

  • 这个可以用VBA压缩吗,还是C#需要打滚?
  • @Brandon:C# 不需要发挥作用,可以用任何一种语言进行压缩。
  • PDF 有多少页?
  • @TimWilliams:PDF 总共有 117 页,但是由于将 excel 表导出到 PDF 占用了太多内存,我将 117 页分成 6 个 PDF 文件,每个大约 20 页。跨度>
  • 你是否选中了“ISO19005-1 Compliant”(导出时它在“选项”对话框中)如果我关闭它,文件会更小。见:superuser.com/questions/645657/…

标签: c# vba excel pdf


【解决方案1】:

考虑到您已经在使用 VBA,您应该考虑使用 7zip 压缩您的 PDF。它是免费的,可以从命令行启动。这是一个链接,您可以在其中找到源代码; http://www.7-zip.org/

使用下面提供的宏,您将能够浏览和压缩单个文件。根据您的喜好,您需要对其进行调整以使其适合您的需求。

Sub ZipFiles()
   Dim src  As Variant
   Dim dst  As Variant
   Dim file As Variant

   Const PATH_TO_7Z = "C:\Program Files\7-Zip\7z.exe"

   Set src = CreateObject("Shell.Application").BrowseForFolder(0, "Source folder", &H245)
   If Not src Is Nothing Then
      src = src.Self.Path & "\"

      Set dst = CreateObject("Shell.Application").BrowseForFolder(0, "Destination folder", &H245)
      If Not dst Is Nothing Then
         dst = dst.Self.Path & "\"

         For Each file In CreateObject("Scripting.FileSystemObject").GetFolder(src).Files
            Shell PATH_TO_7Z & " a -tzip """ & dst & file.Name & ".zip"" """ & file.Path & """"
         Next
      End If
   End If
End Sub

否则,如果您的源文件夹和目标文件夹是不变的,您可以这样做。

Sub ZipFiles()
   Dim file As Variant

   Const SOURCE     = "C:\test\source"
   Const DEST       = "C:\test\destination"
   Const PATH_TO_7Z = "C:\Program Files\7-Zip\7z.exe"

   For Each file In CreateObject("Scripting.FileSystemObject").GetFolder(SOURCE).Files
      Shell PATH_TO_7Z & " a -tzip """ & DEST & "\" & file.Name & ".zip"" """ & file.Path & """"
   Next
End Sub

【讨论】:

  • 谢谢。我的单词选择(压缩)很差。不幸的是,最终产品需要是 PDF 文件而不是 zip 文件,以便可以在移动设备上打开和查看电子邮件附件。我需要一种降低 PDF 质量的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-23
  • 1970-01-01
相关资源
最近更新 更多