Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: mikepo am Februar 07, 2020, 22:55:29

Titel: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: mikepo am Februar 07, 2020, 22:55:29
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
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: Hondo am Februar 07, 2020, 23:35:51
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
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: mikepo am Februar 08, 2020, 00:09:16
vielen Dank erstmal. Und wie kann ich die pdf öffnen, im Listenfeld ?
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: Hondo am Februar 08, 2020, 08:35:10
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
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: mikepo am Februar 09, 2020, 14:17:14
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
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: Hondo am Februar 09, 2020, 14:44:28
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
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: mikepo am Februar 09, 2020, 22:35:35
top, vielen Dank Andreas
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: mikepo am Februar 10, 2020, 22:49:43
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
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: Hondo am Februar 10, 2020, 23:10:26
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
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: mikepo am Februar 11, 2020, 08:20:46
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
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: Hondo am Februar 11, 2020, 09:15:58
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
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: mikepo am Februar 11, 2020, 09:25:15
Hallo Andreas, das Verzeichnis ist ein freigegebenes am Server, deshalb \\servername\verzeichnisA\
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: mikepo am Februar 11, 2020, 09:25:48
es funktioniert !!! vielen dank, es war wirklich nur das "\" das gefehlt hat. jetzt funktioniert auch die IF-Funktion.
Titel: Re: Ordnerinhalt in Listenfeld anzeigen & Datei dann öffnen
Beitrag von: Hondo am Februar 11, 2020, 09:43:26
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