VBA: öffnen eines Ordners der den Namen der ausge

Hallo zusammen.

Ich habe in einer Exceltabelle Seriennummern in der Spalte „K“.

Ich möchte nun das bei einem Doppelklick auf eine der Seriennummern eine PDF Datei geladen wird, die sich in einem Ordner befindet. Die richtige PDF Datei befindet sich in einem Ordner dessen Name die Seriennummer ist auf die ich zuvor den Doppelklick gemacht habe.

Ich bin nicht so der VBA Experte und stehe zur Zeit echt auf dem Schlauch. Wäre nett wenn mir jemand helfen könnte.

Mfg

Ben

Ich möchte nun das bei einem Doppelklick auf eine der
Seriennummern eine PDF Datei geladen wird, die sich in einem
Ordner befindet. Die richtige PDF Datei befindet sich in einem
Ordner dessen Name die Seriennummer ist auf die ich zuvor den
Doppelklick gemacht habe.

Hallo Ben,

wie wäre es mit einem Hyperlink in der Zelle?

Für Vba, in der Zelle steht nur der Ordnername? Ist der Pfad zu diesem Ordner überall gleich?
Wie heißt die pdf? Steht nur eine Datei in dem Ordner?

Gruß
Reinhard

Das ist es was die Sache extrem schwierig macht, in den verschiedenen Ordnern sind jeweils verschieden viele PDF Dateien, deren Anzahl sich auch von Zeit zu Zeit ändert.

Ich wollte es irgendwie hinbekommen das bei einem klick sämtliche PDF Dateien in dem Ordner mit der entsprechenden Seriennummer geladen werden.
Und wenn keine vorhanden sind das halt einfach nichts passiert.

Dateien eines Ordners listen mit FSO
Hallo Ben,

Das ist es was die Sache extrem schwierig macht, in den
verschiedenen Ordnern sind jeweils verschieden viele PDF
Dateien, deren Anzahl sich auch von Zeit zu Zeit ändert.

„extrem schwierig“ ist relativ :smile:

Versuche mal bitte meine nachfragen genauestens zu beantworten. Um so genauer desto besser kann ich und können andere hier dir helfen.

Ich wollte es irgendwie hinbekommen das bei einem klick
sämtliche PDF Dateien in dem Ordner mit der entsprechenden
Seriennummer geladen werden.
Und wenn keine vorhanden sind das halt einfach nichts
passiert.

Hier ist jetzt mal Beispielcode, der zeigt wie man alle pdf-Dateien eines Ordners auflistet/anzeigt.
Klappt der Code?
Wenn ja, muß man nur noch anstatt der Msgbox pro gefundener pdf-Datei diese noch „starten“.
Du hast den Acrobat Reader für PDF, oder was anderes?

Modul: Tabelle1

Private Sub Worksheet\_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Const Pfad As String = "c:\test\"
If Target.Column 11 Then Exit Sub ' raus wenn Spalte "K"
If Target.Value = "" Then Exit Sub ' raus wenn Zelle leer
' ggfs. in dieser zeile prüfen ob Pfad & Target.Value überhaupt existiert.
Call PDFAuflisten(Pfad & Target.Value)
End Sub

Modul: basmain, z.B. Modul1

Sub PDFAuflisten(ByVal Ordner As String)
Dim fso, f, Datei
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(Ordner)
For Each Datei In f.Files
 If Datei.Name Like "\*.pdf" Then MsgBox Datei.Name
Next
End Sub

Gruß
Reinhard

Hi

Hier ist jetzt mal Beispielcode, der zeigt wie man alle
pdf-Dateien eines Ordners auflistet/anzeigt.
Klappt der Code?
Wenn ja, muß man nur noch anstatt der Msgbox pro gefundener
pdf-Datei diese noch „starten“.
Du hast den Acrobat Reader für PDF, oder was anderes?

Der Code hängt bei Set f = fso.GetFolder(Ordner). „Pfad nicht gefunden“.

Ja ich hab den Reader

Danke schonmal bis hierhin, bin was vba angeht leider nicht allzu bewandert.

Hier ist jetzt mal Beispielcode, der zeigt wie man alle
pdf-Dateien eines Ordners auflistet/anzeigt.
Klappt der Code?
Wenn ja, muß man nur noch anstatt der Msgbox pro gefundener
pdf-Datei diese noch „starten“.
Du hast den Acrobat Reader für PDF, oder was anderes?

Der Code hängt bei Set f = fso.GetFolder(Ordner). „Pfad nicht
gefunden“.

Ich korrigiere: Der hängt an dieser Stelle nur wenn der Ordner noch nicht vorhanden ist.

Wie kann ich das umgehen und wie bekomme ich die PDF Dateien gestartet, statt das er mir nur sagt das welche vorhanden sind?

Hallo Ben,

Der Code hängt bei Set f = fso.GetFolder(Ordner). „Pfad nicht
gefunden“.

nachstehend veränderter Code, wo diese Meldung nicht mehr kommt.

Ja ich hab den Reader

Okay, mir ging es um den Programmstart deines PDF-Reader-Programmes mit dem Vba-Befehl „Shell“.
Mit „Shell“ kannste keine pdf starten. Du mußt auch das Pdf-Programm dazu nennen.
D.h., man muß (von Ausnahmen abgesehen) auch den Pfad dazu angeben.
Jetzt kann dieser Pfad bei dir anders sein als bei mir.
Bei mir ist das: „C:\Programme\Adobe\Reader 9.0\Reader\AcroRd32.exe“
Bei dir auch?

Sub PDFAuflisten(ByVal Ordner As String)
Dim fso, f, Datei
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.folderexists(Ordner) Then
 Set f = fso.GetFolder(Ordner)
 For Each Datei In f.Files
 If Datei.Name Like "\*.pdf" Then MsgBox Datei.Name
 Next
End If
End Sub

Gruß
Reinhard

Hi Reinhard

Okay, mir ging es um den Programmstart deines
PDF-Reader-Programmes mit dem Vba-Befehl „Shell“.
Mit „Shell“ kannste keine pdf starten. Du mußt auch das
Pdf-Programm dazu nennen.
D.h., man muß (von Ausnahmen abgesehen) auch den Pfad dazu
angeben.
Jetzt kann dieser Pfad bei dir anders sein als bei mir.
Bei mir ist das: „C:\Programme\Adobe\Reader
9.0\Reader\AcroRd32.exe“
Bei dir auch?

No bei mir ist der Pfad: „C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe“

Ich korrigiere: Der hängt an dieser Stelle nur wenn der Ordner
noch nicht vorhanden ist.

Wie kann ich das umgehen und wie bekomme ich die PDF Dateien
gestartet, statt das er mir nur sagt das welche vorhanden
sind?

Hallo Ben,

in Modul1:

Option Explicit

Sub PDFAuflisten(ByVal Ordner As String)
Dim fso, f, Datei, PDF
Const Acro As String = "C:\Programme\Adobe\Reader 9.0\Reader\AcroRd32.exe" ' ggfs. anpassen
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.folderexists(Ordner) Then
 Set f = fso.GetFolder(Ordner)
 For Each Datei In f.Files
 If Datei.Name Like "\*.pdf" Then
 PDF = Shell(Acro & " " & Ordner & Datei.Name, vbMaximizedFocus)
 End If
 Next
End If
End Sub

in Tabelle1:

Private Sub Worksheet\_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Const Pfad As String = "c:\" ' anpassen an den Pfad zu deinem Ordner
If Target.Column 11 Then Exit Sub ' raus wenn Spalte "K"
If Target.Value = "" Then Exit Sub ' raus wenn Zelle leer
Call PDFAuflisten(Pfad & Target.Value & IIf(Right(Target.Value, 1) "\", "\", ""))
Cancel = True
End Sub

Gruß
Reinhard

Hi Reinhard

Funktioniert alles super, dankeschön.