2016-05-31 1 views
5
Sheets("Key Indicators").ExportAsFixedFormat Type:=xlTypePDF, 
Filename:=ArchivePath, Quality:=xlQualityStandard, 
IncludeDocProperties:=True, IgnorePrintAreas _ 
     :=False, OpenAfterPublish:=False 

Actuellement c'est ce que j'ai.Utilisation de VBA Comment appeler la fonction Adobe Create PDF

Je comprends comment exporter le fichier PDF en format PDF, mais ce que je dois savoir faire est d'accéder à la fonction Créer un PDF sous Acrobat (comme le montre l'image ci-dessous) en utilisant VBA. Si je fais ExportAsFixedFormat les liens sont aplatis. Acrobat "Créer un PDF" me permettrait de convertir un Excel en PDF avec des liens hypertextes inclus.

AdobePDFMakerForOffice

Comment pourrais-je faire cela?

J'utilise Excel 2016 et Adobe Pro DC

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

+2

Le complément Acrobat fournit-il une API? un modèle d'objet? * quoi que ce soit * qui est accessible par programme à partir de VBA? Sinon, vous devrez peut-être recourir à * SendKeys *, qui est une façon horrible et horrible de faire les choses. Quel est le problème avec l'enregistrement au format PDF? Qu'est-ce que le complément Adobe fait qu'Excel ne fait pas déjà? –

+0

Si je sauvegarde normalement en PDF, tous les liens du document seront aplatis. –

+1

[This] (http://superuser.com/a/921280/165271) peut vous aider –

Répondre

1

Acrobat Référence devrait fonctionner
Here is the guide from Adobe
Une fois ajouté, vous pouvez utiliser le code suivant Astuce: Cela peut vous amener à corriger le codage - Je ne suis pas tout à fait sûr puisque je l'ai codé "aveuglément" parce que je n'ai pas Acrobat sur mon PC. Déboguer étape par étape pour voir ce qu'il en est.

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 

pages suivantes peuvent fournir une meilleure assistance: Link1, Link2

+0

Je reçois l'erreur "Can not insert pages-1" –

+1

Reportez-vous à la documentation et essayez de "jouer" en les combinant avec les codes fournis en bas, ne peut pas coder plus loin car je n'ai pas Acrobat. – Sgdva

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

vaut la peine de noter mes liens ne sont pas aplaties lors de l'utilisation de cette approche – jellz77

+0

Sont-ils des liens hypertexte entre les feuilles de calcul? –

2
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

+0

Le problème est que sans appeler Adobe, les liens hypertexte ne transfèrent pas au format PDF –

1

Vous pouvez publier une gamme Excel au format PDF à l'aide ExportAsFixedFormat. Il n'est pas nécessaire de définir une référence à 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 
+0

Le problème est que sans appeler Adobe, les liens hypertexte ne transfèrent pas au format PDF –

+0

liens hypertexte URL pour moi. Les hyperliens de signets sont aplatis. jellz77 utilise ExportAsFixedFormat et vous avez dit qu'il ne les a pas aplatis.Si vous pouvez m'envoyer votre cahier d'exercices, j'en prendrai beaucoup. Sinon, pouvez-vous poster le reste si votre code? –

+0

Liens hypertexte marque que je veux garder. –