Anwendung von Application.GetOpenFilename mit Netzwerkpfad in Excel VBA
Schritt-für-Schritt-Anleitung
Um einen Öffnen-Dialog in Excel zu erzeugen, bei dem der Pfad zu einer Datei im Netzwerk bereits vorgegeben ist, kannst du die folgende VBA-Prozedur verwenden. Diese Methode nutzt die Application.GetOpenFilename
Funktion und ermöglicht dir, einen spezifischen Pfad festzulegen.
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Füge ein neues Modul hinzu: Rechtsklick auf „VBAProject (DeineDatei)“ > Einfügen > Modul.
- Kopiere den folgenden Code in das Modul:
Sub openAlternativePath()
Dim sAppName As String
Dim sSection As String
Dim sFileToOpen As Variant
Dim sFilesPath As String
Dim sSaveCurDir As String
Dim sSaveCurDrive As String
Dim ix As Integer
sAppName = "MartinsApp"
sSection = "DriveDir"
On Error Resume Next
sSaveCurDir = CurDir()
sSaveCurDrive = Left(CurDir(), 1)
If GetSetting(sAppName, sSection, "ThisPath") <> "" Then ChDrive GetSetting(sAppName, sSection, "ThisPath")
If GetSetting(sAppName, sSection, "ThisPath") <> "" Then ChDir (GetSetting(sAppName, sSection, "ThisPath"))
sFileToOpen = Application.GetOpenFilename("Exceldateien (*.xls), *.xls", , "Open a Excel")
If sFileToOpen <> False Then
Application.Workbooks.Open (sFileToOpen)
End If
ChDrive (sSaveCurDrive)
ChDir (sSaveCurDir)
On Error GoTo 0
End Sub
- Schließe den VBA-Editor und führe das Makro aus, um den Öffnen-Dialog zu testen.
Häufige Fehler und Lösungen
-
Fehler: „Datei nicht gefunden“
- Stelle sicher, dass der Pfad korrekt eingegeben wurde. Dies kann passieren, wenn der Netzwerkpfad nicht erreichbar ist.
-
Fehler: „Zugriff verweigert“
- Überprüfe die Berechtigungen für den Netzwerkordner. Du benötigst möglicherweise die entsprechenden Zugriffsrechte.
-
Fehler: Dialog öffnet sich nicht
- Vergewissere dich, dass die
Application.GetOpenFilename
korrekt aufgerufen wird und der Code ohne Fehler ausgeführt wird.
Alternative Methoden
Wenn die oben genannte Methode nicht funktioniert, gibt es alternative Ansätze, um einen Pfad vorzugeben. Eine „unsaubere“ Lösung könnte wie folgt aussehen:
Sub Test()
Dim fileToOpen As Variant
Application.SendKeys "\\Notebook-martin\Netzwerkordner Notebook~"
fileToOpen = Application.GetOpenFilename("Exceldateien (*.xls), *.xls")
End Sub
Diese Methode nutzt Application.SendKeys
, um den Pfad automatisch in das Dialogfeld einzufügen. Beachte jedoch, dass diese Methode weniger zuverlässig ist.
Praktische Beispiele
Hier sind zwei praktische Beispiele für die Verwendung von GetOpenFilename
in verschiedenen Szenarien:
- Öffnen einer Excel-Datei aus einem festgelegten Netzwerkordner:
Sub OpenNetworkFile()
Dim fileToOpen As Variant
fileToOpen = Application.GetOpenFilename("Exceldateien (*.xls), *.xls", , "Wähle eine Datei aus", , False)
If fileToOpen <> False Then
Workbooks.Open fileToOpen
End If
End Sub
- Öffnen mit einem Standardpfad:
Sub OpenWithDefaultPath()
ChDir "\\Notebook-martin\Netzwerkordner Notebook"
Dim fileToOpen As Variant
fileToOpen = Application.GetOpenFilename("Exceldateien (*.xls), *.xls")
If fileToOpen <> False Then
Workbooks.Open fileToOpen
End If
End Sub
Tipps für Profis
- Speichere häufig verwendete Pfade: Verwende die
SaveSetting
und GetSetting
Funktionen, um oft verwendete Netzwerkpfade zu speichern und bei Bedarf abzurufen.
- Vermeide
SendKeys
: Obwohl SendKeys
eine schnelle Lösung ist, kann sie unvorhersehbare Ergebnisse liefern. Nutze stattdessen die strukturierte Methode mit GetOpenFilename
.
- Fehlerbehandlung: Implementiere eine umfassende Fehlerbehandlung in deinem Code, um unerwartete Abbrüche zu vermeiden.
FAQ: Häufige Fragen
1. Wie kann ich den Standardpfad für GetOpenFilename
setzen?
Um einen Standardpfad zu setzen, kannst du die ChDir
Funktion verwenden, bevor du Application.GetOpenFilename
aufrufst.
2. Ist Application.GetOpenFilename
in allen Excel-Versionen verfügbar?
Ja, Application.GetOpenFilename
ist in allen gängigen Excel-Versionen verfügbar, solange VBA unterstützt wird.