簡體   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