Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Bookmarks PDF

Forumthread: VBA Bookmarks PDF

VBA Bookmarks PDF
05.07.2017 10:33:54
chris
Hallo zusammen. Kann mir jemand helfen?
Ich bin dabei PDF Dateien zu mergen. Dabei muss ich diverse Bookmarks setzen.
Alles schon erledigt (siehe Code). Allerdings scheitert es im weiteren Verlauf an den Ebenen der Bookmarks. Diese sollen kategorisch eingeteilt werden. Leider weiß ich nicht wie ich dies über den Code lösen soll. Ich habe auch online keine passende Lösung gefunden..
hier mein Code:

Sub book()
Dim Exch As Object
Dim AVDocu As Object
Dim AVPageView As Object
Dim PDDocu As Object
Dim PDPage As Object
Dim PDText As Object
Dim strArgument2 As String
Dim PDBookmark As Object
Dim numPages As Integer
Dim bFile As Boolean
Dim bShow As Boolean
Dim iPageNumber As Integer
Dim ii As Long, jj As Long, iii As Long
Set Exch = CreateObject("AcroExch.App")
Set AVDocu = CreateObject("AcroExch.AVDoc")
Set PDDocu = CreateObject("AcroExch.PDDoc")
strArgument2 = ("\\ERPA-SERVER\ERPA-Updates\ERPA-Standards\KatalogDE\Erpa_Katalog_DE.pdf")
AVDocu.Open strArgument2, strArgument2
Debug.Print bShow
bShow = Exch.Show()
Debug.Print bShow
Set PDDocu = AVDocu.GetPDDoc
numPages = PDDocu.GetNumPages()
Debug.Print numPages
Set AVPageView = AVDocu.GetAVPageView
Dim bookmarkstr(1000) As String
Dim JSO As Boolean
Dim jsoo As Object
Dim gPdDoc As Acrobat.CAcroPDDoc
Dim indexB As Integer
indexB = 0
Dim indexC As Integer
indexC = 0
For ii = 0 To 500
If ii = 0 Then GoTo hier
If Cells(ii, 4).Value = "standard" Or Cells(ii, 4).Value = "alias" Then
bookmarkstr(indexB) = Range("G" & indexC)
bookmarkstr(indexB + 1) = Range("G" & indexC) & "_2"
End If
hier:
indexB = indexB + 2
indexC = indexC + 1
Next ii
Dim strTempArray() As String
Dim j As Integer
Dim i As Integer
For i = 0 To UBound(bookmarkstr)
If bookmarkstr(i)  "" Then
ReDim Preserve strTempArray(j)
strTempArray(j) = bookmarkstr(i)
j = j + 1
End If
Next
For iii = 0 To numPages - 1
JSO = AVDocu.GetAVPageView.Goto(iii)
'Create BookMark Object
Set PDBookmark = CreateObject("AcroExch.PDBookmark", "")
'execute the menu item
Exch.MenuItemExecute ("NewBookmark")
'set bookmark title
JSO = PDBookmark.GetByTitle(PDDocu, "Unbenannt")
JSO = PDBookmark.SetTitle(strTempArray(iii))
JSO = PDDocu.Save(PDSaveFull, strArgument2)
Next iii
Exch.MenuItemExecute ("Save")
PDDocu.Close
AVDocu.Close (0)
Exch.Exit
Set Exch = Nothing
Set PDDocu = Nothing
Set AVDocu = Nothing
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Crosspost ohne Hinweis
05.07.2017 14:01:40
mmat
Hi,
also wenn ich das richtig kapiert habe, dann soll das anstelle einer flachen Gliederung durch Bookmarks eine hierarchische werden?
Das ist eigentlich kein VBA-Problem, hier gilt es rauszufinden, wie der korrekte Befehl für die Software lautet, mit der die PDF's erzeugt werden. Die Frage sollte der Produktsupport beantworten.
Anzeige
;
Anzeige

Infobox / Tutorial

PDF Bookmarks mit VBA in Excel erstellen


Schritt-für-Schritt-Anleitung

Um PDF-Bookmarks mit VBA in Excel zu erstellen, folge diesen Schritten:

  1. VBA-Editor öffnen: Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub book()
       Dim Exch As Object
       Dim AVDocu As Object
       Dim PDDocu As Object
       Dim strArgument2 As String
       Dim PDBookmark As Object
       Dim numPages As Integer
       Dim indexB As Integer
       indexB = 0
       Set Exch = CreateObject("AcroExch.App")
       Set AVDocu = CreateObject("AcroExch.AVDoc")
       strArgument2 = ("Pfad\zu\deiner\Datei.pdf")
       AVDocu.Open strArgument2, strArgument2
       Set PDDocu = AVDocu.GetPDDoc
       numPages = PDDocu.GetNumPages()
    
       Dim bookmarkstr(1000) As String
       For ii = 0 To 500
           If Cells(ii, 4).Value = "standard" Or Cells(ii, 4).Value = "alias" Then
               bookmarkstr(indexB) = Range("G" & ii)
               indexB = indexB + 1
           End If
       Next ii
    
       For iii = 0 To numPages - 1
           Set PDBookmark = CreateObject("AcroExch.PDBookmark", "")
           Exch.MenuItemExecute ("NewBookmark")
           PDBookmark.SetTitle(bookmarkstr(iii))
           PDDocu.Save(PDSaveFull, strArgument2)
       Next iii
       AVDocu.Close (0)
       Exch.Exit
    End Sub
  4. Anpassen der Pfade: Ersetze Pfad\zu\deiner\Datei.pdf mit dem tatsächlichen Pfad deiner PDF-Datei.

  5. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle book und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: „Konnte die PDF-Datei nicht öffnen“: Überprüfe, ob der angegebene Pfad zur PDF-Datei korrekt ist.
  • Fehler: „Berechtigungen verweigert“: Stelle sicher, dass du die notwendigen Berechtigungen hast, um die PDF-Datei zu bearbeiten.
  • Fehler: „Bookmark nicht gesetzt“: Prüfe, ob die Werte in den Zellen, die zur Erstellung der Bookmarks verwendet werden, korrekt sind.

Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch Tools wie Adobe Acrobat Pro verwenden, um die Bookmarks manuell zu erstellen. In Excel gibt es keine integrierte Funktion für PDF-Bookmarks, aber du kannst die Daten in eine PDF mit einem PDF-Drucker drucken und dabei Bookmarks manuell einfügen.


Praktische Beispiele

Ein Beispiel, wie du Excel-Bookmarks in eine PDF umsetzen kannst:

  1. Erstelle eine Liste in Excel mit den gewünschten Bookmark-Namen in einer Spalte.
  2. Verwende die oben genannten VBA-Codes, um die PDF zu generieren und die Bookmarks mit den Namen aus deiner Liste zu setzen.

Tipps für Profis

  • Nutzung von Arrays: Optimiere den Code, indem du Arrays verwendest, um die Performance bei der Erstellung von vielen Bookmarks zu verbessern.
  • Fehlerbehandlung: Füge eine Fehlerbehandlung in deinen Code ein, um unerwartete Probleme beim Setzen der PDF Bookmarks zu vermeiden.
  • PDF-Dokumentation: Vertraue dich mit der API-Dokumentation von Adobe an, um mehr über die Funktionen und Möglichkeiten von AcroExch zu erfahren.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass meine Bookmarks hierarchisch angeordnet sind?
Um hierarchische Bookmarks zu erstellen, musst du die Struktur in deinen Excel-Daten entsprechend anlegen und den VBA-Code anpassen, um die Ebenen zu setzen.

2. Funktioniert dieser Code in jeder Excel-Version?
Der Code sollte in den meisten modernen Versionen von Excel funktionieren, allerdings kann es Unterschiede bei den Sicherheitseinstellungen geben, die die Ausführung von Makros betreffen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige