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#中压缩?
答案 0 :(得分:0)
考虑到您已经在使用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