Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA: Fester Netzwerkpfad mit GetOpenFilename

VBA: Fester Netzwerkpfad mit GetOpenFilename
12.03.2005 12:38:38
Thorsten
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
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Fester Netzwerkpfad mit GetOpenFilename
12.03.2005 13:10:35
Nepumuk
Hallo Thorsten,
zwei Möglichkeiten:
1. API - GetFileNameFromBrowse
2. CommonDialog-Control - ShowOpen
Bei beiden kannst du den Pfad vorgeben.
Gruß
Nepumuk
chdrive-> chdir ->Application.GetOpenFilename
12.03.2005 13:14:49
ransi
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
Anzeige
Application.FileDialog(msoFileDialogFolderPicker)
13.03.2005 17:34:46
ransi


      
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 


Anzeige
AW: Application.FileDialog(msoFileDialogFolderPicker)
16.03.2005 08:21:00
Thorsten
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
Anzeige
AW: VBA: Fester Netzwerkpfad mit GetOpenFilename
12.03.2005 14:05:32
Ramses
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


Gruss Rainer
Anzeige
AW: VBA: Fester Netzwerkpfad mit GetOpenFilename
12.03.2005 14:16:34
Thorsten
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Fester Netzwerkpfad mit GetOpenFilename in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Dialog für das Öffnen von Dateien in Excel VBA mit einem festen Netzwerkpfad zu versehen, kannst du den folgenden VBA-Code verwenden:

Sub FesterPfadMitGetOpenFilename()
    Dim dateiPfad As String
    dateiPfad = "\\ServerName\Freigabename\Unterordner\" ' Dein Netzwerkpfad

    ChDrive "Z" ' Beispiel: Z ist das Netzlaufwerk
    ChDir dateiPfad
    Dim dateiName As Variant
    dateiName = Application.GetOpenFilename("Excel Dateien (*.xls), *.xls", , "Wähle eine Datei")

    If dateiName <> False Then
        Workbooks.Open dateiName
    End If
End Sub

In diesem Beispiel wird zuerst mit ChDrive und ChDir das Laufwerk und der Pfad gesetzt, bevor der Datei-Öffnen-Dialog mit Application.GetOpenFilename aufgerufen wird. Es wird empfohlen, sicherzustellen, dass der Benutzer über die notwendigen Berechtigungen für den Netzwerkpfad verfügt.


Häufige Fehler und Lösungen

  1. Fehler: "Der angegebene Pfad wurde nicht gefunden."

    • Lösung: Überprüfe den Netzwerkpfad auf Tippfehler und stelle sicher, dass du auf das richtige Laufwerk zugreifst.
  2. Fehler: "Zugriff verweigert."

    • Lösung: Stelle sicher, dass der Benutzer die notwendigen Berechtigungen hat, um auf den Netzwerkpfad zuzugreifen. Möglicherweise musst du den Code anpassen, um mit Anmeldedaten zu arbeiten.

Alternative Methoden

Eine alternative Möglichkeit, um einen festen Pfad in einem Datei-Öffnen-Dialog zu verwenden, ist die Verwendung von Application.FileDialog. Hier ein Beispiel:

Sub DateiDialogMitFestenPfad()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)

    With fd
        .InitialFileName = "\\ServerName\Freigabename\Unterordner\"
        .Title = "Wähle eine Datei"
        If .Show = -1 Then
            MsgBox "Gewählte Datei: " & .SelectedItems(1)
        End If
    End With
End Sub

Hierbei wird mit msoFileDialogFilePicker ein Datei-Öffnen-Dialog geöffnet, der direkt im gewünschten Netzwerkordner startet.


Praktische Beispiele

  1. Beispiel für die Verwendung von GetOpenFilename:

    Sub BeispielGetOpenFilename()
       Dim dateiName As Variant
       dateiName = Application.GetOpenFilename("Excel Dateien (*.xls), *.xls", , "Wähle eine Excel-Datei")
       If dateiName <> False Then
           MsgBox "Sie haben die Datei " & dateiName & " ausgewählt."
       End If
    End Sub
  2. Beispiel für die Verwendung von FileDialog:

    Sub BeispielFileDialog()
       Dim fd As FileDialog
       Set fd = Application.FileDialog(msoFileDialogFilePicker)
       With fd
           .InitialFileName = "\\ServerName\Freigabename\"
           .AllowMultiSelect = False
           If .Show = -1 Then
               MsgBox "Ausgewählte Datei: " & .SelectedItems(1)
           End If
       End With
    End Sub

Tipps für Profis

  • Nutze die Application.GetOpenFilename Methode, um eine benutzerfreundliche Datei-Auswahl zu ermöglichen, indem du Filter für Dateitypen hinzufügst.
  • Wenn du häufig auf denselben Netzwerkpfad zugreifst, speichere den Pfad in einer Konstante oder in einer separaten Konfigurationsdatei.
  • Achte darauf, dass bei der Verwendung von ChDrive und ChDir keine Berechtigungsprobleme auftreten, da dies das aktuelle Verzeichnis für alle offenen Excel-Instanzen ändern kann.

FAQ: Häufige Fragen

1. Kann ich GetOpenFilename auch für andere Dateitypen verwenden?
Ja, du kannst das Filterargument in Application.GetOpenFilename anpassen, um verschiedene Dateitypen zu unterstützen.

2. Wie kann ich sicherstellen, dass der Benutzer die Datei auswählen kann?
Verwende die If .Show = -1 Bedingung, um zu prüfen, ob der Benutzer eine Datei ausgewählt hat, bevor du mit der weiteren Verarbeitung fortfährst.

3. Was mache ich, wenn ich einen Netzwerkpfad mit Anmeldedaten verwenden möchte?
In diesem Fall musst du möglicherweise ein temporäres Netzlaufwerk erstellen oder sicherstellen, dass die Anmeldedaten im Skript korrekt angegeben sind.

4. Gibt es Unterschiede zwischen GetOpenFilename und FileDialog?
Ja, GetOpenFilename öffnet lediglich einen Datei-Öffnen-Dialog, während FileDialog mehr Flexibilität bietet, z.B. die Möglichkeit, zwischen Datei- und Ordnerauswahl zu wechseln.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige