web-dev-qa-db-fra.com

Utilisation de VBA, comment appeler Adobe Create PDF une fonction

  Sheets("Key Indicators").ExportAsFixedFormat Type:=xlTypePDF,
 Filename:=ArchivePath, Quality:=xlQualityStandard,
 IncludeDocProperties:=True, IgnorePrintAreas _
         :=False, OpenAfterPublish:=False

Actuellement c'est ce que j'ai.

Je comprends comment ExportAsFixedFormat PDF, mais il me faut savoir comment accéder à la fonction Créer PDF sous Acrobat (voir illustration ci-dessous) à l'aide de VBA. Si je fais ExportAsFixedFormat, les liens sont aplatis. Acrobat "Créer un fichier PDF" me permettrait de convertir un fichier Excel en PDF avec des liens hypertexte inclus. 

 AdobePDFMakerForOffice

Comment je ferais ça?

J'utilise Excel 2016 et Adobe Pro DC 

 enter image description here Ce sont mes références Adobe

6
Michael Downey

Acrobat Reference devrait fonctionner 
Voici le guide d'Adobe
Une fois ajouté, vous pouvez utiliser le code suivant Conseil: Cela peut vous amener à corriger le codage. - Je ne suis pas tout à fait sûr puisque je l'ai codé "à l'aveuglette" car Acrobat n'est pas en mode. mon ordinateur-. Déboguez étape par étape pour voir ce qui se passe.

Sub ExportWithAcrobat()
Dim AcroApp As Acrobat.CAcroApp 'I'm not quite sure it's needed since we are creating the doc directly
Dim AcrobatDoc As Acrobat.CAcroPDDoc
Dim numPages As Long
Dim WorkSheetToPDF As Worksheet
Const SaveFilePath = "C:\temp\MergedFile.pdf"
    Set AcroApp = CreateObject("AcroExch.App") 'I'm not quite sure it's needed since we are creating the doc directly
    Set AcrobatDoc = CreateObject("AcroExch.PDDoc")
    'it's going to be 0 at first since we just created
    numPages = AcrobatDoc.GetNumPages
    For Each WorkSheetToPDF In ActiveWorkbook.Worksheets
    If AcrobatDoc.InsertPages(numPages - 1, WorkSheetToPDF, 0, AcrobatDoc.GetNumPages(), True) = False Then 'you should be available to work with the code to see how to insert the sheets that you want in the created object ' 1. If Part1Document.InsertPages(numPages - 1, "ExcelSheet?", 0, AcrobatDoc.GetNumPages(), True) = False
    MsgBox "Cannot insert pages" & numPages
    Else ' 1. If Part1Document.InsertPages(numPages - 1, "ExcelSheet?", 0, AcrobatDoc.GetNumPages(), True) = False
    numPages = numPages + 1
    End If ' 1. If Part1Document.InsertPages(numPages - 1, "ExcelSheet?", 0, AcrobatDoc.GetNumPages(), True) = False
    Next WorkSheetToPDF
    If AcrobatDoc.Save(PDSaveFull, SaveFilePath) = False Then ' 2. If Part1Document.Save(PDSaveFull, "C:\temp\MergedFile.pdf") = False
    MsgBox "Cannot save the modified document"
    End If ' 2. If Part1Document.Save(PDSaveFull, "C:\temp\MergedFile.pdf") = False
End Sub

Les pages suivantes peuvent offrir une meilleure assistance: Link1 , Link2

1
Sgdva
Sub PDF()
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        "C:\Users\PCNAME\Documents\Book1.pdf", Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
    True
End Sub

S'il vous plaît essayer les codes ci-dessus

3
David Syriac
With ActiveSheet
    .ExportAsFixedFormat Type:=xlTypePDF, Filename:="N:\JKDJKDJ", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True,  
    IgnorePrintAreas:=False, OpenAfterPublish:=False
End With
1
jellz77

Vous pouvez publier n’importe quelle plage Excel au format PDF à l’aide de ExportAsFixedFormat. Il n'est pas nécessaire de définir une référence pour Acrobat.

' Usage:
' PublishRangePDF(Thisworkbook, fileName) : Will Publish the entire Workbook
' PublishRangePDF(AvtiveSheet, fileName) : Will Publish all selected worksheets
' PublishRangePDF(Range("A1:H100"), fileName) : Will Publish Range("A1:H100")


Sub PublishRangePDF(RangeObject As Object, fileName As String, Optional OpenAfterPublish As Boolean = False)
    On Error Resume Next
    RangeObject.ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=OpenAfterPublish
    On Error GoTo 0
End Sub
1
user6432984