如何在MAC计算机上将Excel VBA导出为PDF

如何在MAC计算机上将Excel VBA导出为PDF,excel,vba,macos,export-to-pdf,Excel,Vba,Macos,Export To Pdf,我有Excel文档的宏代码。我想将活动工作表作为PDF文件导出到特定文件夹。同样的代码在我的Windows PC上工作,但在我的MAC PC上不工作。当我单击“保存”按钮时,它将打印pdf而不是保存它。我想保存它。如果有人能帮助我,我将非常高兴 Sub Save_NEWPORT_ESTIMATE() If Range("G1") = "INVOICE" Then LigneIS = Application.CountA(Sheets("Invoice summary").Range("A:A

我有Excel文档的宏代码。我想将活动工作表作为PDF文件导出到特定文件夹。同样的代码在我的Windows PC上工作,但在我的MAC PC上不工作。当我单击“保存”按钮时,它将打印pdf而不是保存它。我想保存它。如果有人能帮助我,我将非常高兴

Sub Save_NEWPORT_ESTIMATE()

If Range("G1") = "INVOICE" Then

LigneIS = Application.CountA(Sheets("Invoice summary").Range("A:A"))
Sheets("Invoice summary").Range("A" & LigneIS + 1) = Now
Sheets("Invoice summary").Range("B" & LigneIS + 1) = Sheets("NANTUCKET ESTIMATE").Range("H8")
Sheets("Invoice summary").Range("C" & LigneIS + 1) = "NANTUCKET"
Sheets("Invoice summary").Range("D" & LigneIS + 1) = Sheets("NANTUCKET ESTIMATE").Range("A12")
Sheets("Invoice summary").Range("E" & LigneIS + 1) = Sheets("NANTUCKET ESTIMATE").Range("M49")

Else
    LigneIS = Application.CountA(Sheets("Invoice summary").Range("A:A"))
    Sheets("Estimate summary").Range("A" & LigneIS + 1) = Now
    Sheets("Estimate summary").Range("B" & LigneIS + 1) = 
    Sheets("NANTUCKET ESTIMATE").Range("H8")
    Sheets("Estimate summary").Range("C" & LigneIS + 1) = "NANTUCKET"
    Sheets("Estimate summary").Range("D" & LigneIS + 1) = 
    Sheets("NANTUCKET ESTIMATE").Range("A12")
    Sheets("Estimate summary").Range("E" & LigneIS + 1) = 
    Sheets("NANTUCKET ESTIMATE").Range("M49")

End If
    D1 = Format(Date, "ddmmyy")
    Customer = Left(Range("A12"), 6)
    Job = Range("G12")
    Tipe = Range("G1")
    Model = Range("G18")

If Tipe = "INVOICE" Then
Tipe2 = "1 SALES INVOICES"
Else
Tipe2 = "1 ESTIMATES"
End If

Lien = "/Users/macbookpro/Desktop/INVOICE/" & Tipe2

ChDir "/Users/macbookpro/Desktop/INVOICE/" & Tipe2

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    Lien & "\" & D1 & " " & Model & "_" & Customer & "_" & Job & "_" & Tipe & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=True

End Sub

Sub Save_NANTUCKET_ESTIMATE()

If Range("G1") = "INVOICE" Then
LigneIS = Application.CountA(Sheets("Invoice summary").Range("A:A"))
Sheets("Invoice summary").Range("A" & LigneIS + 1) = Now
Sheets("Invoice summary").Range("B" & LigneIS + 1) = Sheets("NANTUCKET ESTIMATE").Range("H8")
Sheets("Invoice summary").Range("C" & LigneIS + 1) = "NANTUCKET"
Sheets("Invoice summary").Range("D" & LigneIS + 1) = Sheets("NANTUCKET ESTIMATE").Range("A12")
Sheets("Invoice summary").Range("E" & LigneIS + 1) = Sheets("NANTUCKET ESTIMATE").Range("M49")
Else
LigneIS = Application.CountA(Sheets("Invoice summary").Range("A:A"))
Sheets("Estimate summary").Range("A" & LigneIS + 1) = Now
Sheets("Estimate summary").Range("B" & LigneIS + 1) = Sheets("NANTUCKET ESTIMATE").Range("H8")
Sheets("Estimate summary").Range("C" & LigneIS + 1) = "NANTUCKET"
Sheets("Estimate summary").Range("D" & LigneIS + 1) = Sheets("NANTUCKET ESTIMATE").Range("A12")
Sheets("Estimate summary").Range("E" & LigneIS + 1) = Sheets("NANTUCKET ESTIMATE").Range("M49")
End If

D1 = Format(Date, "ddmmyy")
Customer = Left(Range("A12"), 6)
Job = Range("G12")
Tipe = Range("G1")
Model = Range("G18")
If Tipe = "INVOICE" Then
Tipe2 = "1 SALES INVOICES"
Else
Tipe2 = "1 ESTIMATES"
End If

Lien = "/Users/macbookpro/Desktop/INVOICE/" & Tipe2

ChDir "/Users/macbookpro/Desktop/INVOICE/" & Tipe2

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
    Lien & "\" & D1 & " " & Model & "_" & Customer & "_" & Job & "_" & Tipe & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    OpenAfterPublish:=True
End Sub

我不确定此请求是否仍然有效,但我在上找到了解决方案

mac上的导出为PDF参数的反应似乎与windows PC上的不同,您需要一种变通方法,将PDF保存到用户库文件夹中,特别是Office库文件夹中。关键功能是

    Function CreateFolderinMacOffice2016(NameFolder As String) As String
    'Function to create folder if it not exists in the Microsoft Office Folder
    'Ron de Bruin : 1-Feb-2019
    Dim OfficeFolder As String
    Dim PathToFolder As String
    Dim TestStr As String

    OfficeFolder = MacScript("return POSIX path of (path to desktop folder) as string")
    OfficeFolder = Replace(OfficeFolder, "/Desktop", "") & _
        "Library/Group Containers/UBF8T346G9.Office/"

    PathToFolder = OfficeFolder & NameFolder

    On Error Resume Next
    TestStr = Dir(PathToFolder & "*", vbDirectory)
    On Error GoTo 0
    If TestStr = vbNullString Then
        MkDir PathToFolder
        'You can use this msgbox line for testing if you want
        'MsgBox "You find the new folder in this location :" & PathToFolder
    End If
    CreateFolderinMacOffice2016 = PathToFolder
End Function
使用此函数创建文件夹并直接使用返回值作为文件路径将使其正常工作


所有的功劳都归功于Ron de Bruin,我只是抄了这个来帮忙。请访问他的页面了解更多示例。

我不确定此请求是否仍然有效,但我在上找到了解决方案

mac上的导出为PDF参数的反应似乎与windows PC上的不同,您需要一种变通方法,将PDF保存到用户库文件夹中,特别是Office库文件夹中。关键功能是

    Function CreateFolderinMacOffice2016(NameFolder As String) As String
    'Function to create folder if it not exists in the Microsoft Office Folder
    'Ron de Bruin : 1-Feb-2019
    Dim OfficeFolder As String
    Dim PathToFolder As String
    Dim TestStr As String

    OfficeFolder = MacScript("return POSIX path of (path to desktop folder) as string")
    OfficeFolder = Replace(OfficeFolder, "/Desktop", "") & _
        "Library/Group Containers/UBF8T346G9.Office/"

    PathToFolder = OfficeFolder & NameFolder

    On Error Resume Next
    TestStr = Dir(PathToFolder & "*", vbDirectory)
    On Error GoTo 0
    If TestStr = vbNullString Then
        MkDir PathToFolder
        'You can use this msgbox line for testing if you want
        'MsgBox "You find the new folder in this location :" & PathToFolder
    End If
    CreateFolderinMacOffice2016 = PathToFolder
End Function
使用此函数创建文件夹并直接使用返回值作为文件路径将使其正常工作


所有的功劳都归功于Ron de Bruin,我只是抄了这个来帮忙。访问他的页面了解更多示例。

我遇到运行时错误什么运行时错误?错误消息是什么?它就在你面前的屏幕上,但是我们从这里看不到你的屏幕。你有有用的信息,应该在你的帖子里。请把它放在那里。谢谢。顺便说一句,问题很可能是Mac没有
C:
驱动器,并且没有使用反斜杠作为路径分隔符。不要硬编码只有Windows的路径和文件名,因为该路径在非Windows机器上不起作用。谢谢Ken,我犯了一个错误,当然我的mac上没有C:了。我在我的windows PC上使用了此代码,它正常工作。上面的代码在我的mac上不能正常工作。当我点击保存按钮时,它正在打印pdf而不是保存它。我得到运行时错误什么运行时错误?错误消息是什么?它就在你面前的屏幕上,但是我们从这里看不到你的屏幕。你有有用的信息,应该在你的帖子里。请把它放在那里。谢谢。顺便说一句,问题很可能是Mac没有
C:
驱动器,并且没有使用反斜杠作为路径分隔符。不要硬编码只有Windows的路径和文件名,因为该路径在非Windows机器上不起作用。谢谢Ken,我犯了一个错误,当然我的mac上没有C:了。我在我的windows PC上使用了此代码,它正常工作。上面的代码在我的mac上不能正常工作。当我点击Save按钮时,它正在打印pdf而不是保存它。