使用 Mac Excel VBA 另存为 pdf



我在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

我尝试使用路径分隔符,再次使用最后一个"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

显然,将"示例"替换为您的用户名,并为您的特定情况添加文件夹路径。

相关内容

  • 没有找到相关文章

最新更新