[英]Save as pdf using Mac Excel VBA
我在 Mac OS 上保存为 PDF 的 Excel VBA 有时不起作用。
它会给
“打印时出错”
然后
“运行时错误‘1004’:应用程序定义或对象定义的错误”。
我的代码,昨天有效:
'a) For Windows
Dim wksSheet As Worksheet, PS As String
PS = Application.PathSeparator
If InStr(1, Application.OperatingSystem, "Windows") > 0 Then
Set wksSheet = ActiveSheet
wksSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
ThisWorkbook.Path & PS & pdfName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
'Exit Sub
Else
'b) For MAC
Dim pdfName As String, FullName As String
pdfName = "Q - " & Range("F2").Value & " - " & Range("A2").Value & " - " & Range("B10").Text
FullName = "/Users/" & QTGetUserNameMAC & "/Google Drive/ABC Pte Ltd/Q - Quotations/" _
& pdfName & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FullName _
, Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
End If
我记录了宏并使用了我的代码中生成的代码(如下所示)。 有用。 但是,如果我删除代码中的最后一个“9”,则会出现上述错误。
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:= _
"/Users/" & QTGetUserNameMAC & "/Google Drive/ABC Pte Ltd/Q - Quotations/Q - VAS-Quote-QT190039.pdf" _
, Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
我尝试使用 PathSeparator,并且再次使用最后一个 '9' 它可以工作,但是没有 '9' 会出现错误。
以下是有关如何执行此操作的指南: https : //www.rondebruin.nl/mac/mac034.htm
重要的是您无法将文件保存到您选择的位置。
它必须保存到当前用户主目录下的文件夹Library/Group Containers/UBF8T346G9.Office
,因此在大多数情况下是/Users/[current user]/Library/Group Containers/UBF8T346G9.Office
。 如果该文件夹不存在,则必须创建它。 (请参阅上面链接页面上的代码示例)
为罗恩点赞!
请在此处投票支持 MS 修复此问题: https : //excel.uservoice.com/forums/304933-excel-for-mac/suggestions/36531559-fix-exportasfixedformat-method
在创建自动 Excel 发票工具时,我自己一直在与这个问题作斗争。 最大的问题很简单,在我工作的公司,每个人都使用 Mac,所以我必须发挥创造力。 不幸的是,网上没有太多帮助(我还查看了 rondebruin 网站,该网站被多次提及但无济于事),但这对我有用,我认为它应该对您和以后会来的任何人有用。
要修复 Excel 不允许您保存到特定文件夹,只需记录一个宏并执行您通常需要的步骤。 就我而言,它们是:另存为,选择 PDF(在对话框中),选择您的文件夹(再次在对话框中)。 完成此操作后,打开 VBA 并查看它刚刚为您提供的录制宏的代码。 现在,您只需更改所需的详细信息,例如基于单元格值或工作表名称的 Pdf 名称,仅此而已。 执行宏后,macOS 会要求您授予 Excel 权限,您只需接受该权限,最重要的是您只需执行一次,然后它就会自动运行。
这是我使用的代码片段,适用于 macOS Big Sur 版本 11.6 和 Excel 版本 16.54:
Sub Save_Invoice_to_Folder()
ChDir _
"/Users/Example/Downloads/"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, filename:= _
"/Users/Example/Downloads/" & "Invoice-" & Range("E3").Text & ".pdf" _
, Quality:=xlQualityMinimum, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
End Sub
显然,将“示例”替换为您的用户名,并为您的特定案例添加文件夹路径。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.