mit VBA Ordner öffnen und Dateinamen in Variable packen
#1
moin,

ich möchte mit VBA einen Ordner öffnen und durch klick auf eine Datei 
den Dateinamen in einer MsgBox ausgeben lassen

hiermit erreiche ich auch diese Ziel

Code:
Sub OrdnerOeffnen()
    Dim FileName As String
    Dim FilePath As Variant
    FilePath = Application.GetOpenFilename("Alle Dateien (*.*), *.*", , "Bitte wählen Sie eine Datei aus")
    If FilePath <> False Then
        FileName = Dir(FilePath)
        MsgBox "Der ausgewählte Dateiname lautet: " & FileName, vbInformation, "Dateiname"
    Else
        MsgBox "Es wurde keine Datei ausgewählt.", vbInformation, "Abgebrochen"
    End If
End Sub

damit öffnet sich dann der Dialog mit dem ich mich durch den Explorer klicken kann
ich möchte aber gern den Ordnerpfad vorgeben

hiermit öffne ich den Ordner

Code:
Sub mach_et()
    Dim OrdnerPfad As String
    OrdnerPfad = "D:\D-Dokumente\sonstiges\Testordner"
    Shell "Explorer.exe " & Chr(34) & OrdnerPfad & Chr(34), vbNormalFocus
End Sub

da bleibt mir aber nur das Auswählen einer Datei zum Öffnen und das möchte ich grad nicht

wie schaffe ich es also einen vorgegebenen Ordner zu öffnen
eine Datei in dem Ordner anzuklicken
und mir den Dateinamen in der MsgBox anzeigen zu lassen?

das ganze unter Office365 32bit als auch 64bit

mfg Tom
Antworten Top
#2
Hallo Tom,

verwende dafür nicht GetOpenFilename(), sondern das FileDialog-Objekt, bei dem kannst du den Ordner vorgeben.

Knobbi38
[-] Folgende(r) 1 Nutzer sagt Danke an knobbi38 für diesen Beitrag:
  • Crazy Tom
Antworten Top
#3
Moin!
Siehe Knobbi38!
Aber da ich grad dransaß:
Code:
Sub Dingens()
With Application.FileDialog(msoFileDialogFilePicker)
  .InitialFileName = "E:\aktueller Stand\Übung"
  .Show
  On Error GoTo Mistake
  MsgBox "FullName ist " & .SelectedItems(1)
End With
Exit Sub
Mistake:
MsgBox "Keine Datei ausgewählt!"
End Sub

Gruß Ralf

Ergänzend:
Wenn es nur der Dateiname sein soll, dann packe ein Dir() um .SelectedItems(1)
Code:
MsgBox "Dateiname ist " & Dir(.SelectedItems(1))
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 2 Nutzer sagen Danke an RPP63 für diesen Beitrag:
  • Crazy Tom, PIVPQ
Antworten Top
#4
moin,

besten Dank an Euch beide für die Hilfe
@ Ralf gut, dass du grad dran saßt
wer weiß ob ich das so perfekt ohne nachzufragen hinbekommen hätte  19

mfg Tom
Antworten Top
#5
Danke fürs Danke! Wink
Ergänzend:
Es gibt ja nicht wenige "Puristen", die Sprungmarken im Code kritisieren, weil sie "aus der Zeit gefallen" sind.
Deshalb hier eine Variante, die prüft, ob eine Datei ausgewählt wurde (es kann jetzt auch nur eine Datei gewählt werden).

Code:
Sub Dingens()
With Application.FileDialog(msoFileDialogFilePicker)
  .AllowMultiSelect = False
  .InitialFileName = "E:\aktueller Stand"
  .Show
  If .SelectedItems.Count Then
    MsgBox "Dateiname ist: """ & Dir(.SelectedItems(1)) & """"
  Else
    MsgBox "Keine Datei ausgewählt!"
  End If
End With
End Sub
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 2 Nutzer sagen Danke an RPP63 für diesen Beitrag:
  • Crazy Tom, PIVPQ
Antworten Top
#6
moin Ralf,

es geht halt immer noch nen Tacken besser  19
so ist es noch etwas eleganter
ich versuche Sprungmarken eigentlich auch immer zu vermeiden
lehne sie aber nicht grundsätzlich ab

mfg Tom
Antworten Top
#7
(14.09.2025, 07:48)RPP63 schrieb: Ergänzend:
eine Variante, die prüft, ob eine Datei ausgewählt wurde

Warum nicht gleich das Ergebnis der Funktion abfragen? 

If Not .Show then
  MsgBox "keine Datei"
  Exit Sub
End If

Andreas.
Antworten Top
#8
Hallo

Hatte gerade was Langeweile, was meinen die VBA-Profis hiervon?
Code:
Sub Suchwas()
    Dim fd As FileDialog
    Dim selectedFile As String

    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .AllowMultiSelect = False
        .InitialFileName = "E:\"
        .Title = "Bitte eine Datei auswählen"
        .Filters.Clear
        .Filters.Add "Alle Dateien", "*.*"

        If .Show = -1 Then
            selectedFile = .SelectedItems(1)
            MsgBox "Dateiname ist: """ & VBA.FileSystem.Dir(selectedFile) & """", vbInformation, "Datei ausgewählt"
        Else
            MsgBox "Keine Datei ausgewählt!", vbExclamation, "Abbruch"
        End If
    End With
    Set fd = Nothing
End Sub
Viele Grüße
PIVPQ
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: FrPam, 1 Gast/Gäste