C# VBA导出为PDF生成一个非常大的PDF文件
我正在尝试使用VBA将excel工作表导出为PDF。excel表格中充满了时间序列图。VBA创建的PDF太大,无法发送电子邮件(90mb)。有没有办法导出到较小的文件大小?我曾尝试将质量更改为“xlQualityMinimum”,但文件大小没有改变C# VBA导出为PDF生成一个非常大的PDF文件,c#,vba,excel,pdf,C#,Vba,Excel,Pdf,我正在尝试使用VBA将excel工作表导出为PDF。excel表格中充满了时间序列图。VBA创建的PDF太大,无法发送电子邮件(90mb)。有没有办法导出到较小的文件大小?我曾尝试将质量更改为“xlQualityMinimum”,但文件大小没有改变 或者,我可以用C#压缩PDF。但我找不到一个自由的方法来做这件事。如果无法用VBA输出较小的文件,是否有人知道如何用C#压缩?考虑到您已经在使用VBA,您应该考虑使用7zip压缩PDF。它是免费的,可以从命令行启动。这里有一个链接,你可以在这里找到来
或者,我可以用C#压缩PDF。但我找不到一个自由的方法来做这件事。如果无法用VBA输出较小的文件,是否有人知道如何用C#压缩?考虑到您已经在使用VBA,您应该考虑使用7zip压缩PDF。它是免费的,可以从命令行启动。这里有一个链接,你可以在这里找到来源 使用下面提供的宏,您将能够导航和压缩单个文件。根据您的喜好,您需要对其进行调整,使其符合您的需要
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:="file_path", _
Quality:=xlQualityMinimum, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
否则,如果源文件夹和目标文件夹是常量,则可以执行以下操作
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
这可以用VBA压缩,还是C#需要发挥作用?@Brandon:C#不需要发挥作用,它可以用任何一种语言压缩。PDF中有多少页?@TimWilliams:PDF总共有117页,但因为将excel表导出为PDF占用了太多内存,我将117页分成了6个PDF文件,每个大约20页。如果我关闭该选项,是否选中了“ISO19005-1兼容”选项(导出时在“选项”对话框中),文件会变小。见:谢谢。我的单词选择(压缩)很差。不幸的是,最终产品需要是PDF文件而不是zip文件,这样才能在移动设备上打开和查看电子邮件附件。我需要一种降低PDF质量的方法。
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