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

Application.GetOpenFilename mit Netzwerkpfad

Forumthread: Application.GetOpenFilename mit Netzwerkpfad

Application.GetOpenFilename mit Netzwerkpfad
13.09.2005 10:19:20
Martin
Hallo!
Jetzt sitze ich schon Ewigkeiten an einem Problem, bei dem ich einfach keine Lösung finde: Wie kann ich ein Öffnen-Dialog erzeugen, in dem die Adresse der zu öffnenden Datei im Netzwerk schon vorgegeben ist?
So geht es leider nicht:
ChDir "\\Notebook-martin\Netzwerkordner Notebook
fileToOpen = Application.GetOpenFilename("Exceldateien (*.xls), *.xls")
Über Lösungsvorschläge wäre ich sehr dankbar!!!
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Application.GetOpenFilename mit Netzwerkpfad
13.09.2005 11:08:54
EtoPHG
Hallo Martin,
Gratis und Franko:
Probiers mal hiermit.
Tip: Du musst den Drive wechseln, bevor Du den Path wechseln kannst.

Sub openAlternativePath()
'   Copyright 2004 by EtoP Hansueli Göldi
'   Part of exBox (Excel utilities out of the box)
'   Open dialog for an alternative directory
'   Settings are saved in registry for second use of Routine
Dim sAppName, 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)
ActiveWorkbook.RunAutoMacros xlAutoOpen
ix = 1
sFilesPath = ""
Do While InStr(ix, sFileToOpen, "\") > 0
ix = InStr(ix, sFileToOpen, "\") + 1
Loop
sFilesPath = Left(sFileToOpen, ix - 1)
SaveSetting sAppName, sSection, "ThisPath", sFilesPath
SaveSetting sAppName, sSection, "ThisDrive", Left(sFilesPath, 1)
End If
ChDrive (sSaveCurDrive)
ChDir (sSaveCurDir)
On Error GoTo 0
End Sub

Gruss Hansueli
Anzeige
AW: Application.GetOpenFilename mit Netzwerkpfad
13.09.2005 11:13:18
Matthias
Hallo Martin,
ich habe nur diese, "unsabere" Lösung gefunden:

Sub Test()
Dim fileToOpen
Application.SendKeys "\\Notebook-martin\Netzwerkordner Notebook~"
fileToOpen = Application.GetOpenFilename("Exceldateien (*.xls), *.xls")
End Sub

GRuß Matthias
Anzeige
AW: Application.GetOpenFilename mit Netzwerkpfad
13.09.2005 12:16:04
Martin
Hallo Mathhias,
ob unsauber oder nicht, es funktioniert! Vielen Dank!
Beste Grüße,
Martin
;
Anzeige

Infobox / Tutorial

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.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf „VBAProject (DeineDatei)“ > Einfügen > Modul.
  3. 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
  1. 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:

  1. Ö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
  1. Ö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.

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