【问题标题】:Save as pdf using Mac Excel VBA使用 Mac Excel VBA 保存为 pdf
【发布时间】:2018-09-24 05:26:10
【问题描述】:

我在 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' 会出现错误。

【问题讨论】:

    标签: excel vba macos


    【解决方案1】:

    以下是有关如何操作的指南: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

    【讨论】:

    • 我们有一个 VBA 脚本(在 Excel for mac 中)用于将工作表保存为 PDF,它在升级到 Excel 16 for mac 后停止工作。通过将目标位置更改为上述位置,它再次起作用。所以为我 +1!
    【解决方案2】:

    在创建自动 Excel 发票工具时,我自己一直在与这个问题作斗争。最大的问题是,在我工作的公司里,每个人都使用 Mac,所以我必须发挥创造力。不幸的是,网上没有太多帮助(我还查看了提到很多但无济于事的 rondebruin 网站),但这对我有用,我认为它应该对你和以后会来的任何人有用。

    要修复 Excel 不允许您保存到特定文件夹的问题,只需记录一个宏并正常执行您需要的步骤。在我的情况下,它们是:另存为,选择 PDF(在对话框中),选择您的文件夹(再次在对话框中)。 完成此操作后,打开 VBA 并查看它刚刚为您提供的用于记录宏的代码。 现在您只需更改所需的详细信息,例如基于单元格值或工作表名称的 Pdf 名称,仅此而已。 执行宏后,macOS 会要求您授予 Excel 权限,您只需接受即可,最重要的是您只需执行一次,然后它就会自动运行。

    这是我在 macOS Big Sur 11.6 版和 Excel 16.54 版上使用的代码的 sn-p:

    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
    

    显然用您的用户名替换“示例”,并为您的特定案例添加您的文件夹路径。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 2015-05-06
      • 2021-10-18
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      • 2021-05-15
      相关资源
      最近更新 更多