Benutzer mit den meisten Antworten
Problem: Aus Listbox Datei öffnen

Frage
-
Da ich noch ein Anfänger bin, bräuchte ich bitte eure Hilfe.
Ich habe 2 Listboxes("lbxVerzeichnisse"/ "lbxDateien"), die sozusagen in meinem Formular einen ersatz Explorer darstellen.
Das Verzeichnis der angezeigten Datei aus der Listbox wird im Textfeld: "tbxVerzeichnis" angezeigt.
Bis hierhin klappt alles.
Jetzt möchte ich die Dateien, die ich aus der anzeigten lbxDateien -Listbox ausgewählt habe, öffnen können.
Hierbei bin ich auf eure Hilfe angewiesen. Vielen Dank schomal im Voraus!!!!
Private Sub FillListboxes(strPfad As String, strMaske As String) Dim strEintrag As String Dim strDateien As String Dim strVerzeichnisse As String strEintrag = Dir(strPfad & strMaske, vbDirectory) Do Until strEintrag = "" If (GetAttr(strPfad & strEintrag) And vbDirectory) = vbDirectory Then If strEintrag <> "." Then strVerzeichnisse = strVerzeichnisse & ";" & strEintrag End If Else '################################################## 'Dateiendungseinschränkung 'derArb If Me!cbxDateiEndung.Column(1) = "*.*" Then strDateien = strDateien & ";" & strEintrag Else If Right(strEintrag, 3) <> Me!cbxDateiEndung.Column(1) Then strDateien = strDateien Else strDateien = strDateien & ";" & strEintrag End If End If '################################################## End If strEintrag = Dir Loop With Me!lbxVerzeichnisse .RowSource = Mid$(strVerzeichnisse, 2) .Requery End With With Me!lbxDateien .RowSource = Mid$(strDateien, 2) .Requery End With End Sub Private Sub lbxVerzeichnisse_Click() If Me!lbxVerzeichnisse = ".." Then Me!tbxVerzeichnis = Left$(Me!tbxVerzeichnis, _ InStrRev(Me!tbxVerzeichnis, "\", _ Len(Me!tbxVerzeichnis) - 1)) Else Me!tbxVerzeichnis = Nz(Me!tbxVerzeichnis, cstrStartverzeichnis) & _ Me!lbxVerzeichnisse & "\" End If tbxVerzeichnis_AfterUpdate Me!lbxVerzeichnisse.Requery End Sub
- Bearbeitet TimmiEG Mittwoch, 14. November 2018 15:31
- Bearbeitet Stefan FalzModerator Mittwoch, 14. November 2018 16:55 Code formatiert
Antworten
-
Alternativ gibt es die Onboard-Funktion FollowHyperlink:
Application.FollowHyperlink "X:\Ordner\Datei.txt"
Funktionalität entspricht dem Doppelklick auf einen Dateinamen im Windows Explorer.
Gruss - Peter
- Als Antwort markiert Peter DoeringMVP, Moderator Dienstag, 27. November 2018 11:01
-
Hi,
eine Datei öffnen kannst Du bspw. so:
Dim LocalShell Set LocalShell = CreateObject( "Shell.Application" ) LocalShell.Open "X:\Ordner\Datei.txt" Set LocalShell = Nothing
Die Variable heißt bei mir "LocalShell", da es ein globales Objekt "Shell" gibt, das aber meines Wissens nach nur Anwendungen öffnet und keine Dateien ohne dass man die dazugehörige Exe angibt. (Du kannst die Variable aber auch anders benennen, x oder y oder Hummelinchen^^)
Shell.Application hingegen kann das, da Windows sich die passende Anwendung zur Datei selbst raussucht.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Bearbeitet Stefan FalzModerator Mittwoch, 14. November 2018 17:43
- Als Antwort markiert Peter DoeringMVP, Moderator Dienstag, 27. November 2018 11:01
Alle Antworten
-
Hi,
eine Datei öffnen kannst Du bspw. so:
Dim LocalShell Set LocalShell = CreateObject( "Shell.Application" ) LocalShell.Open "X:\Ordner\Datei.txt" Set LocalShell = Nothing
Die Variable heißt bei mir "LocalShell", da es ein globales Objekt "Shell" gibt, das aber meines Wissens nach nur Anwendungen öffnet und keine Dateien ohne dass man die dazugehörige Exe angibt. (Du kannst die Variable aber auch anders benennen, x oder y oder Hummelinchen^^)
Shell.Application hingegen kann das, da Windows sich die passende Anwendung zur Datei selbst raussucht.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport- Bearbeitet Stefan FalzModerator Mittwoch, 14. November 2018 17:43
- Als Antwort markiert Peter DoeringMVP, Moderator Dienstag, 27. November 2018 11:01
-
Alternativ gibt es die Onboard-Funktion FollowHyperlink:
Application.FollowHyperlink "X:\Ordner\Datei.txt"
Funktionalität entspricht dem Doppelklick auf einen Dateinamen im Windows Explorer.
Gruss - Peter
- Als Antwort markiert Peter DoeringMVP, Moderator Dienstag, 27. November 2018 11:01
-
Vielen dank für die schnelle Antwort.
@Peter: Mit der Application.FollowHyperlink Me!tbxVerzeichnis Methode wird der Windowsexplorer mit dem Pfad aus tbxVerzeichnis geöffnet. Somit muss man die ausgewälte Datei im Windowsexplorer zum öffnen erneut auswählen. Wie lässt sich das auf direktem Wege mit Doppel anklicken einer Datei in der Listbox öffnen?
Und falls es nicht zu viel verlangt wäre, wie kann ich die Dateien in einem bestimmten Ordner z.B. \Monitoring in der Listbox suchen und anzeigen lassen, wobei sich dieser in irgendeinem Unterordner befindet.
-
@ Peter Danke für Ihre Antwort, leider hat der code nicht funktioniert bzw bin ich nach dem google'n von LocalShell in bezug auf Access nicht schlauer geworden.
Gruß Timmi
-
Hallo Timmi,
"LocalShell" wirst Du auch nicht finden. Ich schrieb ja, dass ich nur die Variable so benannt hatte. Eben weil es bereits ein globals, automatisch verfügbares Objekt "Shell" gibt.
Für dich interessant ist eher
CreateObject( "Shell.Application" )
bzw. nur "Shell.Application". Aber der Code sollte dennoch funktionieren.
Und falls es nicht zu viel verlangt wäre, wie kann ich die Dateien in einem bestimmten Ordner z.B. \Monitoring in der Listbox suchen und anzeigen lassen, wobei sich dieser in irgendeinem Unterordner befindet.
Ich dachte, das hast Du alles bereits?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hallo,
Mit der Application.FollowHyperlink Me!tbxVerzeichnis Methode wird der Windowsexplorer mit dem Pfad aus tbxVerzeichnis geöffnet. Somit muss man die ausgewälte Datei im Windowsexplorer zum öffnen erneut auswählen. Wie lässt sich das auf direktem Wege mit Doppel anklicken einer Datei in der Listbox öffnen?
Naja, du musst den Dateinamen mit angeben, nicht nur das Verzeichnis. Ich weiß nicht, wie die Felder in deinem Formular heißen, daher nur Pseudocode:
Application.FollowHyperlink Me!tbxVerzeichnis & "\" & Me!Dateiname
Und falls es nicht zu viel verlangt wäre, wie kann ich die Dateien in einem bestimmten Ordner z.B. \Monitoring in der Listbox suchen und anzeigen lassen, wobei sich dieser in irgendeinem Unterordner befindet.
Du kannst per Dir-Funktion suchen und den gefundenen Dateinamen mit obiger Methode öffnen. Solltest du allerdings erst Verzeichnisse listen und dann Dateinamen darin suchen wollen, ist die von Stefan vorgeschlagene Methode mit dem Shell-Objekt vorzuziehen, wegen größeren Funktionsumfangs.
Gruss - Peter
- Als Antwort vorgeschlagen Stefan FalzModerator Dienstag, 4. Dezember 2018 11:37