繁体   English   中英

使用 Mac Excel VBA 保存为 pdf

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM