August 11, 2022, 05:15:23

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Datei-Explorer in einem bestimmten Verzeichnis mit VBA öffnen

Begonnen von Umbauwfb, Januar 14, 2022, 22:26:50

⏪ vorheriges - nächstes ⏩

Umbauwfb

Hallo,
ich möchte mit einem cmdButton den Dateiexplorer in einem vorgegebenen Verzeichnis öffnen.
Das Öffnen des Dateiexplorers ohne Verzeichnisvorgabe funktioniert.
Der Code mit der Verzeichnisvorgabe wird nicht kompiliert...
DLookup liefert den richtigen Wert...
Was mach ich falsch???

Vielen Dank für Eure Hilfe
Harry

Private Sub cmdVerzeichnisTN_Click()
 
    'Verzeichnis in Datei-Explorer oeffnen
   
    Dim strPfad As String

    strPfad = DLookup("Ordnerpfad", "OrdnerAnlegenT", "ID = 1") & Forms!TeilnehmerAdressdatenF!Nummer
    '(Liefert den Wert D:\Workbooks\Workbook Bewerbung Datenbank\TeilnehmerVerzeichnisse\988)...also richtig
   
    'start Explorer
   
    'Shell("Explorer.exe " & strPfad, vbNormalFocus)    'funktioniert nicht

    Shell "Explorer.exe", vbNormalFocus     'funktioniert

   
End Sub

PhilS

Zitat von: Umbauwfb am Januar 14, 2022, 22:26:50Das Öffnen des Dateiexplorers ohne Verzeichnisvorgabe funktioniert.
Der Code mit der Verzeichnisvorgabe wird nicht kompiliert...
Schau dir mal ganz genau an, worin sich die funktionierende von der nicht funktionieren Codezeile unterscheidet; das " & strPfad" kannst du dabei ignorieren.

Ich denke, dir wird selbst der Unterschied und somit die Lösung auffallen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ebs17

Problem könnten die Leerzeichen im Pfad sein => Pfad explizit in Anführungsstrichen einpacken, z.B.
strPfad = Chr(34) & DLookup(...) & Chr(34)
Generell statt Shell würde ich aber ShellExecute bevorzugen, oder aber im einfachen Fall
Application.FollowHyperlink strPfad
Mit freundlichem Glück Auf!

Eberhard

Umbauwfb

Vielen Dank für die Hilfe!
Insbesondere für den einfachen Lösungsweg.
Damit brauche ich auch den Verweis zur Nutzung von Shell nicht zu aktivieren.
Ich bin blutiger Anfänger und will alles möglichst einfach halten! Finde aber die einfachen Lösungen noch nicht immer...

Der Code funktioniert jetzt einwandfrei und sieht so aus:

Dim strPfad As String
    strPfad = DLookup("Ordnerpfad", "OrdnerAnlegenT", "ID = 1") & Forms!TeilnehmerAdressdatenF!Nummer
       
        If Dir(strPfad, vbDirectory) = "" Then
            MsgBox "Ordner ist noch nicht angelegt"
        Else
            Application.FollowHyperlink strPfad
        End If
End Sub

Zum Abschluss noch eine Frage zur Oberfläche des Forums: Wo ist die Stelle, an der ich anclicken kann, dass das Thema gelöst und beendet ist?

Schöne Grüße
Harry

Umbauwfb

Zitat von: PhilS am Januar 15, 2022, 10:25:48
Zitat von: Umbauwfb am Januar 14, 2022, 22:26:50Das Öffnen des Dateiexplorers ohne Verzeichnisvorgabe funktioniert.
Der Code mit der Verzeichnisvorgabe wird nicht kompiliert...
Schau dir mal ganz genau an, worin sich die funktionierende von der nicht funktionieren Codezeile unterscheidet; das " & strPfad" kannst du dabei ignorieren.

Ich denke, dir wird selbst der Unterschied und somit die Lösung auffallen.

Vielen Dank für die Info!
Ich habe mein Bestes gegeben...aber ich kann den Unterschied nicht erkennen oder einordnen...
Wenn Du möchtest, kläre mich bitte auf...dann weiß ich wieder etwas mehr...
Schöne Grüße aus Lüneburg
Harry

PhilS

Zitat von: Umbauwfb am Januar 15, 2022, 13:30:59Wenn Du möchtest, kläre mich bitte auf...dann weiß ich wieder etwas mehr...
Mal untereinander geschrieben, ohne den strPfad:
Shell("Explorer.exe " vbNormalFocus)    'funktioniert nicht
Shell "Explorer.exe", vbNormalFocus     'funktioniert

Klammern sind erforderlich bei einem Ausdruck, dessen Rückgabewert weiterverarbeitet werden soll, dürfen aber nicht verwendet werden bei einem Statement, das selbst die wesentliche Anweisung der Codezeile darstellt. - Ja, das ist schwer zu verstehen und insgesamt ziemlich unsinnig. Ist aber leider in VBA so.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor