Guten Abend zusammen,
was wäre denn der richtige Vorgang, um in einem Formular/Listenfeld einen Ordnerinhalt, sprich die Dateien in dem Ordner, im Listenfeld anzuzeigen. Und dann bei Doppelklick auf den jeweiligen Dateinamen (hauptsächlich PDF-Dateien), diese Datei dann aus dem Formular heraus zu öffnen.
Ich finde im Netz sehr viel "alten" (und langen) VBA code von 2006 und früher. Aber da müsste es doch was aktuelleres geben?!
Danke für Eure Mithilfe/Tipps
lg
Hallo,
ein Listenfeld ist dafür eigentlich nicht so gut geeignet, ich würde das in einem Listview anzeigen - oder einem TreeView, beides Microsoft OCX Controls.
Ansonsten wenn du in Google suchst nach diesem Thema findest du zig Lösungen, z.B. hier:
https://www.ms-office-forum.net/forum/showthread.php?t=259337
Gruß Andreas
vielen Dank erstmal. Und wie kann ich die pdf öffnen, im Listenfeld ?
Hallo,
dazu benötigt man einen installierten PDF-Viewer wie den Akrobat o.Ä.
Öffnen tut man das dann z.B. so:
FollowHyperlink "c:\User\Demouser\Dokumente\Dokument4711.pdf"
Andreas
Hallo Andreas, vielen Dank, hat mir sehr geholfen deine Tipps.
Wie schaffe ich es, dass hier:
Private Sub CommandButton1_Click()
Const Verz = "c:\temp"
Dim Datei
Dim Ordner
Dim FSO As Object
Set FSO = CreateObject("Scripting.filesystemobject")
Me.ListBox1.Clear
For Each Datei In FSO.getfolder(Verz).Files
Me.ListBox1.AddItem Datei 'Dir(Datei)
Next
For Each Ordner In FSO.getfolder(Verz).subfolders
Me.ListBox1.AddItem Ordner
Next
End Sub
das Verzeichnis mit einem Platzhalter gefüllt ist. Das wenn ich die Artikelnummer eingebe (bspw. 12345678) das Verzeichnis sich dann so zusammensetzt: C:\temp\12345678
danke für deine Hilfe
lg michael
Hallo,
die Methode clear gibts nicht für Listenfelder.
Statt dessen muss die Rowsouce auf "" gesetzt werden:
Private Sub CommandButton1_Click()
Const Verz = "c:\temp"
Dim Datei As Object, Ordner As Object, FSO As Object
Set FSO = CreateObject("Scripting.filesystemobject")
Me.Liste1.RowSource = ""
For Each Datei In FSO.getfolder(Verz).Files
Me.Liste1.AddItem Datei
Debug.Print Datei
Next
For Each Ordner In FSO.getfolder(Verz).subfolders
Me.Liste1.AddItem Ordner
Next
End Sub
ZitatWie schaffe ich es daß das Verzeichnis mit einem Platzhalter gefüllt ist. Das wenn ich die Artikelnummer eingebe (bspw. 12345678) das Verzeichnis sich dann so zusammensetzt: C:\temp\12345678
Stringaddition heißt das Zauberwort:
Me.Liste1.AddItem "c:\temp\" & Me.txtArtikelnummer
Gruß Andreas
top, vielen Dank Andreas
Hallo, ich habe jetzt folgendes Problem, wenn es zu dieser Artikelnummer kein Verzeichnis gibt.
Was kann ich da machen, das es dann einfach eine leere Listbox1 anzeigt, ohne der Fehlermeldung das er den Pfad nicht finden kann ?
habe es mit einer If Schleife probiert, aber dann sucht er trotzdem nach dem Pfad
If Verz = "" Then
ListBox1.RowSource = ""
Else
.....
danke für eure Tipps. lg michael
Bitte poste den kompletten Code.
Mit den 3 Zeilen kann man nichts anfangen.
Ganz generell prüft man mit DIR() ob ein Verzeichnis vorhanden ist.
Gruß Andreas
Hallo Andreas,
dies wäre der code (ich will das es mir die Dateien anzeigt (ohne der Verzeichnisstruktur), über einen Button rechts öffne ich dann die Datei). txtStartSuche dort steht die Artikelnummer drinnen. Funktioniert ohne der If-Function einwandfrei, nur leider halt mit Fehlermeldung wenn NICHTS im Ordner ist
Dim Verz As String
Verz = "\\VerzeichnisA\VerzeichnisB\" & Forms!frmStartseite!txtStartSuche
If Dir(Verz) = "" Then
ListBox1.RowSource = ""
Else
Dim Datei
Dim Ordner
Dim FSO As Object
Set FSO = CreateObject("Scripting.filesystemobject")
ListBox1.RowSource = ""
For Each Datei In FSO.getfolder(Verz).Files
Me.ListBox1.AddItem Datei.Name
Next
For Each Ordner In FSO.getfolder(Verz).subfolders
Me.ListBox1.AddItem Ordner.Name
Next
End If
End Sub
er zeigt mir jetzt immer eine leere Listbox an, egal ob was im Verzeichnis drinnen ist oder nicht
Gruss, Michael
Hallo,
mal davon abgesehen dass "\\VerzeichnisA\VerzeichnisB\" kein gültiges Verzeichnis ist da der Laufwerksbuchstabe fehlt, fehlt einfach am Ende ein Backslash:
Verz = "c:\VerzeichnisA\VerzeichnisB\" & Forms!frmStartseite!txtStartSuche & "\"
Gruß Andreas
Hallo Andreas, das Verzeichnis ist ein freigegebenes am Server, deshalb \\servername\verzeichnisA\
es funktioniert !!! vielen dank, es war wirklich nur das "\" das gefehlt hat. jetzt funktioniert auch die IF-Funktion.
Du solltest deinen Code besser formatieren das verbessert auch die Übersichtlichkeit.
Ich nutze dazu das kostenlose Tool Smart Indenter: https://www.add-ins.com/macro-products-for-Microsoft-Excel/how-to-indent-vba-code/how-to-indent-vba-code.htm
Gruß Andreas