Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
376to380
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
376to380
376to380
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Ordner öffnen

Ordner öffnen
04.02.2004 11:26:48
Monika
Hallo!
wie lautet der Befehl in VB füre das Öffnen eines Ordners?
Danke
Monika

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Application.Dialogs(xlDialogOpen).Show o.T.
04.02.2004 11:33:21
Ramses
...
AW: Application.Dialogs(xlDialogOpen).Show o.T.
04.02.2004 11:36:42
Monika
Mhhhhhhhh.
ich wollte einen bestimmten ordner öffnen.
mit der genauen pfadangabe.........
ähnlich wie mit workbook.open. nur halt keine datei sondern einen ordner........

Danke!!!!
Monika
AW: Application.Dialogs(xlDialogOpen).Show o.T.
04.02.2004 11:44:39
Ramses
Hallo
und was willst du sonst noch ?
Nur mit einem Ordner kannst du nichts anfangen ? Das macht keinen Sinn.
Hier mal eine Variante die ich vor längerer Zeit mal gemacht habe.
Vielleicht kannst du das brauchen:



Option Explicit
Public OldDrive As String
Public OldFolder As String
Public NewDrive As String
Public NewFolder As String
Public OldHome As String
Public ActiveUser As String
Sub Folder_Wechsel()
Dim MyErr As String
Dim TempString As String, gefFile As String
Dim oldStatus As Variant
Dim Sind As Integer, qe As Integer
On Error Resume Next
'Den user ermittlen. Das ist mehr ein Gag
'Hierfür wird die Fehlerroutine abgeschaltet
'wenn es die Variable auf einem anderen Betreibssystem nicht gibt
'-9 ist fix weil die linke Zeichenfolge der Variable
'Environ(24) "USERNAME=" lautet
ActiveUser = Right(Environ(24), Len(Environ(24)) - 9)
On Error GoTo Error_Correction
'Neue Funktion erst ab Office XP verwendbar
'bzw. auch unter 2000 wenn ein Verweis auf die Office 11 Library
'gesetzt werden kann.
'Öffnet einen Dialog indem der Pfad elegant wie im normalen
'Datei-Dialog gewählt werden kann.
Dim Suchdialog As FileDialog
Set Suchdialog = Application.FileDialog(msoFileDialogFolderPicker)
'Ermittelt das aktuelle Verzeichnis des Users unter NT
OldHome = Right(Environ(25), Len(Environ(25)) - 12)
OldDrive = "C:\"
OldFolder = OldHome & "\Eigene Dateien"
ReDrive:
'Wenn das Makro noch nie aufgerufen wurde,
'ist die Variable NewDrive leer
If NewDrive = "" Then
    If Application.Version < 10 Then
        'Dialog für EXCEL 2000 und früher wenn die Variable
        'NewDrive noch leer ist
        TempString = InputBox("Geben Sie bitte den kompletten Pfad an," & Chr$(13) & "zu dem gewechselt werden soll" & Chr$(13) & "mit Laufwerk, , Doppelpunkt und Backslash", "Neue Pfadangabe erforderlich", "C:\Ihr Verzeichnis\ihr Unterverzeichnis\")
        If TempString = "" Then Exit Sub
        If Len(TempString) <= 3 Then
            MsgBox ("Sie haben nur ein Laufwerk ohne Pfad angegeben")
            GoTo ReDrive
        End If
        If Right(Left(TempString, 3), 1) <> "\" Or InStr(1, Left(TempString, 3), ":") = 0 Then
            MsgBox ("Ungültige Laufwerkbezeichnung")
            GoTo ReDrive
        End If
        NewDrive = Left(TempString, 3)
        NewFolder = TempString
    Else
        'Dialog für EXCEL XP und höher
        With Suchdialog
            .Title = "Bitte wählen Sie ein Verzeichnis aus"
            'Environ(25) ermittelt den Aktuellen Userpfad
            .InitialFileName = Environ(25) & "\Eigene Dateien\"
            .ButtonName = "Auswahl übernehmen"
            .Show
            If .SelectedItems.count = 0 Then
                MsgBox "Sie haben kein Verzeichnis ausgewählt", vbInformation
                Set Suchdialog = Nothing
                Exit Sub
            Else
                For Sind = 1 To .SelectedItems.count
                    NewFolder = NewFolder & .SelectedItems(Sind)
                Next Sind
            End If
            'Weil der komplette Pfad der Variable übergeben wurde
            'kann das Laufwerk extrahiert werden
            NewDrive = Left(NewFolder, 3)
            Exit Sub
        End With
    End If
End If
'Ist der aktuelle Ordner nicht der Standardordner
'"Eigene Dateien" wird auf den anderen Pfad gewechselt
'Ausführen des Wechsels
If CurDir <> NewFolder Then
    qe = MsgBox(ActiveUser & ":" & Chr$(13) & "Möchten Sie auf " & NewFolder & " wechseln?", vbQuestion + vbYesNoCancel + vbDefaultButton2, "Verzeichniswechsel")
    If qe = vbCancel Then Exit Sub
    If qe = vbNo Then
        qe = MsgBox("Möchten Sie ein neues Zielverzeichnis wählen ?", vbYesNo + vbCritical + vbDefaultButton2, "Verzeichniswechsel")
        If qe = vbNo Then
            MsgBox "Das Verzeichnis wird nicht gewechselt" & Chr$(13) & "Aktuelles Verzeichnis: " & CurDir
            Exit Sub
        Else
            GoTo ReDrive
        End If
    End If
    ChDrive NewDrive
    ChDir NewFolder
Else
    'Ansonsten wechselt es wieder zurück zum
    'Standardordner Eigene Dateien
    qe = MsgBox(ActiveUser & ":" & Chr$(13) & "Möchten Sie auf " & OldFolder & " wechseln?", vbQuestion + vbYesNoCancel + vbDefaultButton2, "Verzeichniswechsel")
    If qe = vbCancel Then Exit Sub
    If qe = vbNo Then
        MsgBox "Das Verzeichnis wird nicht gewechselt" & Chr$(13) & "Aktuelles Verzeichnis: " & CurDir
        Exit Sub
    End If
    MyErr = 2
    ChDrive OldDrive
    ChDir OldFolder
End If
Error_Exit:
Exit Sub
Error_Correction:
Select Case Err
    Case 68
        'Fehlendes Update des Explorers durch den Masterbrowser in einem Netzwerk
        MsgBox ("Das Gerät/Laufwerk das Sie angegeben haben existiert nicht")
        NewDrive = ""
        Resume ReDrive
    Case 76
        'Fehlendes Update des Explorers durch den Masterbrowser in einem Netzwerk
        MsgBox ("Der Pfad den Sie angegeben haben existiert nicht")
        NewDrive = ""
        Resume ReDrive
    Case Else
        qe = MsgBox("" & Chr$(13) & Err & " :" & Err.Description, vbCritical + vbOKOnly, "Unerwarteter Fehler")
        Resume Error_Exit
End Select
End Sub

     Code eingefügt mit Syntaxhighlighter 2.5


Gruss Rainer
Anzeige
AW: Ordner öffnen
04.02.2004 11:46:57
AndreasS
Hallo,
' Quelle: http://www.chf-online.de/vba/ordnerauswahl.htm
'An dieser Stelle kann auf den API-Aufruf SHBrowseForFolder zurückgegriffen werden.
'Mit Hilfe dieses API erhält man ein Dialog-Fenster mit den verfügbaren
'Verzeichnisbäumen.
'Das ausgewählte Verzeichnis kann an eine Variable zurückgegeben
'und weiter verwendet werden. Dem Aufruf kann auch ein Verzeichnis
'als Startverzeichnis mitgegeben werden. Im folgenden Beispiel wird der evtl.
'bereits zurückgegebene Verzeichnisname wieder als Startverzeichnis für den
'nächsten Aufruf verwendet. Zu beachten ist dabei nur,
'daß die Variable nur solange zur Verfügung steht, wie die Funktion aktiv ist.
Sub Ordnerauswahl()
Dim Verzeichnis As String
Verzeichnis2 = GetFolderInternal(Verzeichnis, Verzeichnis)
End Sub


'Und in ein extra Modul:
Option Explicit
Private Type BROWSEINFO
hWndOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpFn As Long
lParam As String
iImage As Long
End Type
Private Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (ByRef lpbi As BROWSEINFO) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" (ByVal pidl As Long, _
ByVal pszPath As String) As Long
Private Declare Sub CoTaskMemFree Lib "ole32.dll" (ByVal pv As Long)
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long
Private Const WM_USER As Long = &H400
Private Const BIF_RETURNONLYFSDIRS As Long = 1
Private Const BFFM_INITIALIZED As Long = 1
Private Const BFFM_SETSELECTION As Long = (WM_USER + 102)
Private Const MAX_PATH As Long = 260
Public Function GetFolderInternal(ByVal Caption As String, _
ByVal Default As String) As String
Dim BI As BROWSEINFO
Dim ListIdx As Long
Dim Path As String
With BI
.lpszTitle = Caption
.ulFlags = BIF_RETURNONLYFSDIRS
.lpFn = MakeFktnPtr(AddressOf BrowseCallbackProc)
.lParam = Default
End With
Path = String$(MAX_PATH + 1, vbNullChar)
ListIdx = SHBrowseForFolder(BI)
If SHGetPathFromIDList(ListIdx, Path) Then
GetFolderInternal = Left$(Path, InStr(Path, vbNullChar) - 1)
End If
CoTaskMemFree ListIdx
End Function


Private Function BrowseCallbackProc(ByVal hWnd As Long, _
ByVal Msg As Long, _
ByVal lParam As Long, _
ByVal lpData As Long) As Long
On Error Resume Next
If Msg = BFFM_INITIALIZED Then
SendMessage hWnd, BFFM_SETSELECTION, 1&, lpData
End If
End Function


Private Function MakeFktnPtr(ByVal FktnPtr As Long) As Long
MakeFktnPtr = FktnPtr
End Function

Gruß Andreas
Anzeige
HILEEEE AHHHHHHHHH....
04.02.2004 11:49:42
Monika
Hey Ihr beiden!!1
Vielen Dank für Eure Mühen, aber ich möchte den ordner doch nur öffnen!!!!!!
nur den ordner, nicht die Dateien in dem ordner!!!

Monika
AW: HILEEEE AHHHHHHHHH....
04.02.2004 11:55:47
AndreasS
Hallo,

Sub Ordner()
Shell "explorer"
End Sub

Gruß Andreas
AW: HILEEEE AHHHHHHHHH....
04.02.2004 11:59:40
Monika
Hallo!!!
ich habe jetzt versucht, statt explorer den Dateipfad einzugeben. Damit auch nur dieser bestimmte ordner göffnet wird. Das klappt aber nicht.........
Moníka
AW: HILEEEE AHHHHHHHHH....
04.02.2004 12:09:13
Bernd Kiehl
Hallo Monika,
probier mal das ...

Sub ordner()
Application.Dialogs(xlDialogOpen).Show ("C:\temp") 'Dateipfad anpassen
End Sub

Gruss Bernd
Anzeige
AW: Ordner öffnen
04.02.2004 12:26:12
xXx
Hallo Monika,
vielleicht so:

Sub Ordner_oeffnen()
Dim MyShell as Object
Set MyShell=CreateObject("WScript.Shell")
MyShell.Run "c:\Test"
End Sub

Gruß aus'm Pott
Udo
http://www.excelerator.de

P.S. Das Forum lebt auch von den Rückmeldungen an die Antworter!
AW: Ordner öffnen
04.02.2004 12:29:21
Monika
Danke, aber da wird der ordner ja in dem fenster öffnen angezeigt. ich möchte, dass er so geöffnet ist, wie wenn ich ihn manuell öffne!
Monika

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige