VBA: Fester Netzwerkpfad mit GetOpenFilename

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: VBA: Fester Netzwerkpfad mit GetOpenFilename
von: Thorsten
Geschrieben am: 12.03.2005 12:38:38
Hallo,
zu meinem Problem habe ich bereits die Suche im Archiv bemüht, habe aber leider nur teilweise Informationen dazu gefunden. (Nämlich das es so wie ich es mir vorstelle nicht geht (ChDir))
Ich habe ein Excelformular, das eine Importfunktion hat. Ich kann also Formulare mit älterer Versionsnummer in mein aktuelles Formular importieren.
(Die Versionsnummer vergebe ich selbst, wenn ich Änderungen im aktuellen Formular vornehme)
Die älteren Formulare befinden sich alle in einem Ordner. Alle Benutzer im Netzwerk sollen nun diese älteren Formulare in die aktuelle Version importieren können. So weit so gut. Momentan funktioniert das über GetOpenFilename.
Das einzige was nervt ist, dass sich jeder erst über das Dialogfeld durch die Pfade im Netzwerk winden muss, um an den Ordner mit den älteren Formularen zu kommen.
Ich suche jetzt nach einer Möglichkeit, GetOpenFilename mit einem festen Netzwerkpfad zu versehen um direkt in den gesuchten Ordner zu wechseln. Gibt es da eine Möglichkeit?
Vielen Dank für Euere Mühe.
Gruß Thorsten

Bild

Betrifft: AW: VBA: Fester Netzwerkpfad mit GetOpenFilename
von: Nepumuk
Geschrieben am: 12.03.2005 13:10:35
Hallo Thorsten,
zwei Möglichkeiten:
1. API - GetFileNameFromBrowse
2. CommonDialog-Control - ShowOpen
Bei beiden kannst du den Pfad vorgeben.
Gruß
Nepumuk
Bild

Betrifft: chdrive-> chdir ->Application.GetOpenFilename
von: ransi
Geschrieben am: 12.03.2005 13:14:49
hallo thosten
wenn du vorher mit chdrive das laufwerk änderst, könnte es was werden.
Public

Sub t()
ChDrive "netzwerklaufwerk"
ChDir 'Dein verzeichniss
Application.GetOpenFilename
MsgBox CurDir
End Sub

ransi
Bild

Betrifft: Application.FileDialog(msoFileDialogFolderPicker)
von: ransi
Geschrieben am: 13.03.2005 17:34:46


      
hallo
hab noch mal ein wenig 
in der hilfe gestöbert und gebastelt,
vieleicht hilft die dies ja weiter:
Option Explicit
Sub netzwerk_durchsuchen()
Dim Ordnerpfad
With Application.FileDialog(msoFileDialogFolderPicker)
   .Title = 
"Netzwerk...."
   .InitialFileName = 
"F:\Dein weiterer Pfad..." 'oder was auch immer
               If .Show = -1 Then
                  
For Each Ordnerpfad In .SelectedItems
                          MsgBox Ordnerpfad 
'Zur weiteren verwendung
                  Next Ordnerpfad
             
End If
    
End With
End Sub
ransi 

     Code eingefügt mit Syntaxhighlighter 3.0


Bild

Betrifft: AW: Application.FileDialog(msoFileDialogFolderPicker)
von: Thorsten
Geschrieben am: 16.03.2005 08:21:00
Hallo ransi,
hab jetzt Deinen Code ausprobiert. Leider hats da nur Ordner angezeigt. War aber kein Problem. Zum Dateien anzeigen braucht man nur die Angabe msoFileDialogFolderPicker in msoFileDialogFilePicker ändern um Dateien auswählen zu können.
Vielen Dank an alle für Euere Mühe das Problem zu lösen.
Gruß Thorsten
Bild

Betrifft: AW: VBA: Fester Netzwerkpfad mit GetOpenFilename
von: Ramses
Geschrieben am: 12.03.2005 14:05:32
Hallo
mal ohne API Funktionen sondern nur mit VBA-Bordmitteln
Der Zugriff auf das Netzlaufwerk muss OHNE Eingabe eines Benutzernamens und Passwortes möglich sein, sonst müsste man den Code etwas umschreibem


Option Explicit
Sub Open_File()
Dim As Byte, x As Variant
Dim OrigDrive As String, FreeDrive As String
Dim defShare As String, defPath As String, defName As String
Dim openFile As String
Dim defDrive As String
OrigDrive = Left(ThisWorkbook.FullName, 1)
'Backslash beachten !!!
'Zur Freigabe auf dem jeweiligen Rechner
defShare = "\\ServerName\Freigabename"
'Unterstruktur bis zur Datei
defPath = "\Unterordner\"
'Dateiname
defName = "Datei.xls"
If myFreeDrive = "Null" Then
    'normales öffnen zum Browsen
    'wenn kein Laufwerksname mehr zur Verfügung steht
    openFile = Application.GetOpenFilename(defName & " (*.xls), *.xls")
Else
    defDrive = myFreeDrive
    'ERstellen eines temporären Netzlaufwerkes
    x = Shell("cmd.exe /C net use " & defDrive & ": " & defShare)
    'in das Verzeichnis wechseln
    ChDrive defDrive
    'in den Unterordner wechseln
    ChDir defDrive & ":" & defPath
    'dialog anzeigen
    openFile = Application.GetOpenFilename(defName & " (*.xls), *.xls")
    'Temporäres Laufwerk wieder löschen
    x = Shell("cmd.exe /C net use " & defDrive & " /Delete")
End If
'Die gewählte Datei öffnen
Workbooks.Open (openFile)
End Sub
Function myFreeDrive() As String
'(c) ramses
Dim myFSO As Object, myDrv As Object, drvCount, drvStr As String, vName As String, drvTyp As String
Dim drvmax As Byte, drvNum As Byte
Set myFSO = CreateObject("Scripting.FileSystemObject")
Set drvCount = myFSO.drives
For Each myDrv In drvCount
    Select Case myDrv.drivetype
        Case 3: drvmax = 90 - 1
        Case Else:
            If drvNum = 0 Then
                drvNum = Val(Asc(myDrv.DriveLetter))
            End If
            If drvNum < Val(Asc(myDrv.DriveLetter)) Then
                drvNum = Val(Asc(myDrv.DriveLetter))
            End If
    End Select
Next
If drvmax <= drvNum Then
    myFreeDrive = "Null"
Else
    myFreeDrive = Chr(drvNum + 1)
End If
End Function

     Code eingefügt mit Syntaxhighlighter 2.5


Gruss Rainer
Bild

Betrifft: AW: VBA: Fester Netzwerkpfad mit GetOpenFilename
von: Thorsten
Geschrieben am: 12.03.2005 14:16:34
Vielen Dank für Euere Hilfe.
Sobald ich wieder auf das Netzwerk Zugriff habe, werde ich Euere Anregungen ausprobieren. Ich gebe dann Rückmeldung obs geklappt hat.
Bis dahin wünsche ich Euch noch ein schönes Wochenende.
Gruß Thorsten
 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA: Fester Netzwerkpfad mit GetOpenFilename"