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

Forumthread: VBA, pdf Dateien in listbox einlesen und öffnen

VBA, pdf Dateien in listbox einlesen und öffnen
20.04.2016 08:54:28
Michael
Guten Morgen liebe VBA Gemeinde, wieder stehe ich vor einem Problem was ich auch mit Internet Recherche nicht gelöst bekomme.
Ich möchte aus folgenden Ordner pdf Dateien in eine Listbox einlesen und diese aus der Listbox heraus auch öffnen könnnen.
Diese Listbox befindet sich in einer Userform und der Pfad wo sich die Dateien befinden lauetet: C:\Users\work\Documents\Test\Dateien.
Könnte mir da vielleicht jemand helfen?
Schöne Grüsse
Michael

Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA, pdf Dateien in listbox einlesen und öffnen
20.04.2016 09:43:40
ChrisL
Hi Michael
Private Sub ListBox1_Click()
Const sPfad As String = "C:\Users\work\Documents\Test\Dateien\"
ActiveWorkbook.FollowHyperlink sPfad & ListBox1.Value
End Sub

Private Sub UserForm_Initialize()
Const sPfad As String = "C:\Users\work\Documents\Test\Dateien\"
Dim sDatei As String
sDatei = Dir(sPfad & "\*.pdf")
Do While sDatei  ""
ListBox1.AddItem sDatei
sDatei = Dir()
Loop
End Sub

cu
Chris

Anzeige
AW: VBA, pdf Dateien in listbox einlesen und öffnen
20.04.2016 11:37:03
Michael
Hallo Chris, vielen Dank für dein schnelle Antwort! Klappt auch super, aber ich möchte jetzte mehrere cmd Buttons für mehrere Orner erstellen und das klappt so wie es wollte nicht.....siehe unten.
Oder gibt es eine konfortablere Lösung eine Textbox wie einen Explorer zu verwenden indem man mit Doppelklick Ordner und dann Dateien öffnet.
Gruß Michael
Private Sub UserForm_Initialize()
'################################################################# FUS ######################### _
Const sPfad As String = "D:\Sicherung 18.02.2016\Michael\BV\ERV\FUS\"
Dim sDatei As String
sDatei = Dir(sPfad & "\*.pdf")
Do While sDatei  ""
ListEDV.AddItem sDatei
sDatei = Dir()
Loop
'################################################################# MDR ######################### _
Const sPfad As String = "D:\Sicherung 18.02.2016\Michael\BV\ERV\MDR\"
sDatei = Dir(sPfad & "\*.pdf")
Do While sDatei  ""
ListEDV.AddItem sDatei
sDatei = Dir()
Loop
End Sub

Anzeige
AW: VBA, pdf Dateien in listbox einlesen und öffnen
20.04.2016 12:53:04
ChrisL
Hi Michael
Im Prinzip müsstest du nur die Konstante in eine normale Variable ändern...
Dim sPfad As String
sPfad = "C:....."
Das Problem hast aber beim öffnen, weil die Pfad-Information fehlt. Darum die andere Variante:
Sub t()
Dim flname As Variant
flname = Application.GetOpenFilename("PFD-Datei (*.pdf),*.pdf")
If flname = False Then
Exit Sub
Else
ActiveWorkbook.FollowHyperlink flname
End If
End Sub

cu
Chris

Anzeige
AW: VBA, pdf Dateien in listbox einlesen und öffnen
22.04.2016 08:20:20
Michael
Guten Morgen und hallo Chris,
komme erst jetzt wieder dazu weiter zu basteln.
Leider ist es nicht das was ich mir vorstelle!
Ich möchte die PDF Dateien in die Listbox einlesen und dann mit einem Doppelklick oder Ok Befehl öffnen.
Jetzt habe ich aber mehrere Ordner wo sich Pdf Dateien befinden und die ich einzeln einlesen möchte in dem ich einen CommandButton MDR, SDR und MMW anklicke.
D:\Sicherung 18.02.2016\Michael\BV\ERV\MDR\
D:\Sicherung 18.02.2016\Michael\BV\ERV\SDR\
D:\Sicherung 18.02.2016\Michael\BV\ERV\MMW\
Wäre das möglich?
Gruß Michael

Anzeige
AW: VBA, pdf Dateien in listbox einlesen und öffnen
22.04.2016 10:18:29
ChrisL
Hi Michael
Na gut...
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
With ListBox1
ActiveWorkbook.FollowHyperlink .List(.ListIndex, 0) & .List(.ListIndex, 1)
End With
End Sub

Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "0cm;10cm"
Call LoadLB("D:\Sicherung 18.02.2016\Michael\BV\ERV\MDR\")
Call LoadLB("D:\Sicherung 18.02.2016\Michael\BV\ERV\SDR\")
Call LoadLB("D:\Sicherung 18.02.2016\Michael\BV\ERV\MMW\")
End Sub
Private Sub LoadLB(sPfad As String)
Dim sDatei As String
sDatei = Dir(sPfad & "*.pdf")
Do While sDatei  ""
With ListBox1
.AddItem
.List(.ListCount - 1, 0) = sPfad
.List(.ListCount - 1, 1) = sDatei
sDatei = Dir()
End With
Loop
End Sub

cu
Chris

Anzeige
AW: VBA, pdf Dateien in listbox einlesen und öffnen
22.04.2016 17:52:50
Michael
Hallo Chris,
das klappt super, nur möchte ich nicht alle drei Ordnerinhalte gleichzeitig in die Listbox einlesen! Ich habe drei CommandButtons MDR, SDR und MMW. Wenn ich jetzt MDR klicke soll dieser Inhalt in die Listbox geladen werden! Und mit den anderen dasselbe.
Gruß Michael

Anzeige
AW: VBA, pdf Dateien in listbox einlesen und öffnen
24.04.2016 13:18:12
Michael
Ich verschiebe die Frage mal in den Ordner noch Offen.
Gruß Michael

AW: VBA, pdf Dateien in listbox einlesen und öffnen
25.04.2016 08:40:13
ChrisL
Hi Michael
Private Sub CommandButton1_Click()
Call LoadLB("D:\Sicherung 18.02.2016\Michael\BV\ERV\MDR\")
End Sub

Private Sub CommandButton2_Click()
Call LoadLB("D:\Sicherung 18.02.2016\Michael\BV\ERV\SDR\")
End Sub

Private Sub CommandButton3_Click()
Call LoadLB("D:\Sicherung 18.02.2016\Michael\BV\ERV\MMW\")
End Sub

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
With ListBox1
ActiveWorkbook.FollowHyperlink .List(.ListIndex, 0) & .List(.ListIndex, 1)
End With
End Sub
Private Sub UserForm_Initialize()
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "0cm;10cm"
End Sub

Private Sub LoadLB(sPfad As String)
Dim sDatei As String
sDatei = Dir(sPfad & "*.pdf")
Do While sDatei  ""
With ListBox1
.AddItem
.List(.ListCount - 1, 0) = sPfad
.List(.ListCount - 1, 1) = sDatei
sDatei = Dir()
End With
Loop
End Sub

cu
Chris

Anzeige
AW: VBA, pdf Dateien in listbox einlesen und öffnen
25.04.2016 18:06:47
Michael
Hallo Chris, vielen Dank für deine Hilfe!
Klappt jetzt so wie ich mir das vorgestellt habe.
Gruß Michael
Anzeige
Anzeige

Infobox / Tutorial

PDF-Dateien in einer ListBox mit VBA einlesen und öffnen


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Erstelle eine UserForm in deinem Excel VBA-Projekt und füge eine ListBox sowie mehrere CommandButtons hinzu.

  2. VBA-Code hinzufügen: Füge den folgenden Code in das Code-Modul der UserForm ein, um PDF-Dateien in die ListBox einzulesen und zu öffnen:

    Private Sub UserForm_Initialize()
       ListBox1.ColumnCount = 2
       ListBox1.ColumnWidths = "0cm;10cm"
    End Sub
    
    Private Sub LoadLB(sPfad As String)
       Dim sDatei As String
       sDatei = Dir(sPfad & "*.pdf")
       Do While sDatei <> ""
           With ListBox1
               .AddItem
               .List(.ListCount - 1, 0) = sPfad
               .List(.ListCount - 1, 1) = sDatei
               sDatei = Dir()
           End With
       Loop
    End Sub
    
    Private Sub CommandButton1_Click()
       Call LoadLB("D:\Sicherung 18.02.2016\Michael\BV\ERV\MDR\")
    End Sub
    
    Private Sub CommandButton2_Click()
       Call LoadLB("D:\Sicherung 18.02.2016\Michael\BV\ERV\SDR\")
    End Sub
    
    Private Sub CommandButton3_Click()
       Call LoadLB("D:\Sicherung 18.02.2016\Michael\BV\ERV\MMW\")
    End Sub
    
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
       With ListBox1
           ActiveWorkbook.FollowHyperlink .List(.ListIndex, 0) & .List(.ListIndex, 1)
       End With
    End Sub
  3. UserForm testen: Starte die UserForm und klicke auf die CommandButtons, um die PDF-Dateien in die ListBox einzulesen. Doppelklicke auf eine Datei, um sie zu öffnen.


Häufige Fehler und Lösungen

  • Fehler: ListBox bleibt leer.

    • Lösung: Überprüfe den angegebenen Pfad und stelle sicher, dass sich PDF-Dateien im Verzeichnis befinden. Achte darauf, dass die Dateiendung korrekt ist.
  • Fehler: PDF-Datei öffnet sich nicht.

    • Lösung: Achte darauf, dass der Pfad zur PDF-Datei korrekt zusammengesetzt wird. Überprüfe den Code in der ListBox1_DblClick-Subroutine.

Alternative Methoden

Wenn du nicht nur mit einer ListBox arbeiten möchtest, kannst du auch eine TextBox als Datei-Explorer verwenden. Mit der Methode Application.GetOpenFilename kannst du dem Benutzer erlauben, eine PDF-Datei auszuwählen und zu öffnen. Hier ein Beispiel:

Sub OpenPDF()
    Dim flname As Variant
    flname = Application.GetOpenFilename("PDF-Datei (*.pdf),*.pdf")
    If flname <> False Then
        ActiveWorkbook.FollowHyperlink flname
    End If
End Sub

Praktische Beispiele

  • PDF-Dateien einlesen: Setze den Pfad in den LoadLB-Aufrufen entsprechend deiner Ordnerstruktur.

  • Auf mehrere Ordner zugreifen: Mit verschiedenen CommandButtons kannst du unterschiedliche Ordner in die ListBox laden, wie in der Schritt-für-Schritt-Anleitung beschrieben.


Tipps für Profis

  • Fehlerbehandlung implementieren: Füge Fehlerbehandlungsroutinen hinzu, um das Programm robuster zu machen. Verwende On Error GoTo-Anweisungen, um unerwartete Fehler zu behandeln.

  • VBA Grundlagen PDF: Wenn du mehr über VBA lernen möchtest, suche nach „VBA Grundlagen PDF“, um hilfreiche Ressourcen zu finden.


FAQ: Häufige Fragen

1. Wie kann ich die ListBox anpassen?
Du kannst die ColumnCount und ColumnWidths Eigenschaften deiner ListBox anpassen, um die Anzeige zu optimieren.

2. Ist es möglich, mehrere Dateitypen zu laden?
Ja, du kannst die Datei-Filter in der Dir-Funktion anpassen, um andere Dateitypen einzulesen, z.B. *.docx oder *.xlsx.

3. Wie kann ich PDF-Dateien auseinandernehmen?
Dafür benötigst du spezielle Bibliotheken oder Tools, die PDF-Dateien bearbeiten können, da VBA standardmäßig keine Funktionen zum Auseinandernehmen von PDFs bietet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige