Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dialog speichern unter aufrufen, mit Pfadsuche

Forumthread: Dialog speichern unter aufrufen, mit Pfadsuche

Dialog speichern unter aufrufen, mit Pfadsuche
01.01.2004 22:30:22
Jens
Hallo zusammen.

Erst mal frohes neues Jahr.

Ich hab ein Problem. Und zwar hab ich eine Mappe mit Schaltflächen, über die ich unter anderem den Explorer mit einem bestimmten Verzeichnis öffne.
Da die Mappe von verschiedenen Personen mit verschiedenen Zugriffsberechtigungen benutzt wird, ist beim Betätigen der Schaltfläche eine Pfadsuche hinterlegt. Diese prüft über ein Hilfsblatt (help.expl) die Pfade durch, die ich dort aufgeführt habe. Des Weiteren ist in jedem Ordner den ich darüber öffne eine Start Datei (*.ini Datei) abgelegt. Diese Datei wird über die vorgegebenen Pfade gesucht. Ist sie in einem der Pfade gefunden worden, öffnet der Explorer.

Soweit, Sogut.

Jetzt möchte ich mit der gleichen Methode, also mit suchen über vorgegebene Pfade, Start Datei, den Dialog „speichern unter“ aufrufen. Also diesen Dialog öffnen mit einem vorher festgelegten Ordner. Normal geht das ja über Application.Dialogs(xlDialogSaveAs).Show““. Hinter Show könnte ich jetzt noch schreiben „D:\Test\“ damit der Ordner Test direkt geöffnet wird. Ich brauch aber die Suchfunktion über die Hilfspfade.

Kann mir eventuell jemand bei einer funktionstüchtigen Vervollständigung des Makros helfen. Ich schaff es zwar mit dem Öffnen des Dialoges und einer vorherigen Anzeige, dass die Datei da und dort gefunden wurde, bekomme aber das Dialogfeld immer mit dem Ordner geöffnet, aus dem ich die Mappe heraus geöffnet habe.
Ich habe zur Veranschaulichung eine Beispieldatei mit angehängt. Es müssen auf G: nur zwei Verzeichnisse angelegt und in eines der Beiden die Datei Start.ini abgelegt werden. Wechselt man die ini Datei in den Ordnern hin und her sieht man die Funktionsweise.

Danke für jede Hilfe

Gruß Jens
Anzeige

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dialog speichern unter aufrufen, mit Pfadsuche
01.01.2004 23:24:05
Ramses
Hallo

Du musst vorher das Laufwerk und das Verzeichnis manuell wechseln, dann geht es

'Pfad öffnen
gDir = VorlPfad
ChDrive Left(gDir,2)
ChDir gDir
'Dialog öffnen
stAppName = Application.Dialogs(xlDialogSaveAs).Show

Gruss Rainer
Anzeige
AW: Dialog speichern unter aufrufen, mit Pfadsuche
01.01.2004 23:44:23
Jens
Hallo Rainer

Funktioniert auch nicht. Sobald ich die Schaltfläche zum Dialog "speichern unter" öffnen betätige, wird mir immer noch der Ordner geöffnet, aus dem ich die Mappe heraus gestartet habe. Vielleicht kannst Du mir an Hand meines Codes bzw. Beispieldatei aufzeigen wie Du das meinst.

Gruß Jens
Anzeige
AW: Dialog speichern unter aufrufen, mit Pfadsuche
01.01.2004 23:47:47
Jens
Hallo Rainer

Funktioniert auch nicht. Sobald ich die Schaltfläche zum Dialog "speichern unter" öffnen betätige, wird mir immer noch der Ordner geöffnet, aus dem ich die Mappe heraus gestartet habe. Vielleicht kannst Du mir an Hand meines Codes bzw. Beispieldatei aufzeigen wie Du das meinst. Ich habe ja eine MsgBox Info vorgeschaltet. Bis da hin bekomme ich auch angezeigt unter welchem Pfad bzw. in welchem Ordner die ini Datei gefunden wurden. Nur geöffnet wird der Ordner nicht. Ich benutze übrigens mehrere Pfadvorgaben nicht nur die 2 vom Test.

Gruß Jens
Anzeige
AW: Dialog speichern unter aufrufen, mit Pfadsuche
01.01.2004 23:55:58
Ramses
Hallo

das ist doch im Prinzip egal wieviele Pfadangaben du verwendest.
Wenn "gDir" den Inhalt "D:\Test\" hat wechselt EXCEL mit "ChDrive Left(gDir,2)" auf das Laufwerk D: und mit "ChDir gDir" in das entsprechende Verzeichnis.

Ich sehe keinen Grund warum das bei dir nicht funktionieren sollte.
Der Beispielcode von oben ist in deinem zweiten Makro am Ende untergebracht. sollte also einfach zu identifizieren sein.


Sub test()
'Pfad öffnen
VorlPfad = "E:\Test"
gDir = VorlPfad
ChDrive Left(gDir, 2)
ChDir gDir
'Dialog öffnen
Application.Dialogs(xlDialogSaveAs).Show
End Sub


Dieser Code funktioniert bei mir einwandfrei und ich Habe EXCEL gerade erst gestartet und mein Default-Verzeichnis ist nicht E:\Test

Gruss Rainer
Anzeige
AW: Dialog speichern unter aufrufen, mit Pfadsuche
02.01.2004 00:10:30
Jens
Hallo Rainer

Das versteh ich schon. (Hoffe ich zumindest)
Aber den gleichen Effekt habe ich doch mit dem Code:


Sub test()
Application.Dialogs(xlDialogSaveAs).Show "E:\Test\"
End Sub


Darin kann ich ja auch festlegen mit welchen Laufwerk oder Ordner der Dialog öffnen soll.
Das hat aber doch nichts mit meiner Pfadabfrage zu tun. Von den Pfaden die ich auf dem Hilfsblatt vorgebe, funktioniert definitiv immer nur einer. Hängt mit dem Firmennetzwerk und den unterschiedlichen Pfadnamen zusammen. Im ersten Teil meines Makros wird doch erst mal geprüft welcher Pfad überhaupt existiert. Und erst dann kann der Dialog mit dem Laufwerk und dem entsprechenden Ordner öffnen. Wie gesagt, es hängt alles von der Abfrage vorher ab.

Gruss Jens
Anzeige
AW: Dialog speichern unter aufrufen, mit Pfadsuche
02.01.2004 00:23:10
Ramses
Hallo

Sorry, es liegt sich an der späten Stunde:
Aber du prüfst doch schon ob die Datei existiert oder nicht

VorlVerzeichnis = VorlPfad & "Start.ini"
'überprüfen, ob die Datei existiert
Set FSo = CreateObject("Scripting.FileSystemObject")
If FSo.FileExists(VorlVerzeichnis) Then

Was willst du dann noch prüfen ?

Gruss Rainer
Anzeige
AW: Dialog speichern unter aufrufen, mit Pfadsuche
02.01.2004 00:36:09
Jens
Hallo Rainer
Kein Problem, ich bin auch schon müde und geh auch gleich ins Bett.
Also Rainer, mir gehts auch nicht um das Prüfen welcher Pfad jetzt zugänglich ist bzw. unter welchem Pfad von den vorgegebenen Pfaden die Start.ini gefunden wurde, sondern das mir dann der Dialog "speichern unter" genau mit dem Pfad geöffnet wird, unter welchem vorher bei der Prüfung erfolgreich die Start.ini Datei gefunden wurde. Wie gesagt die Mappe (Oberfläche) steht mehreren Abteilungen im Firmennetzwerk zur Verfügung. Und jeweils nur ein Pfad von den 4 von mir vorgegebenen existiert nur. Das Rausfinden ist also gelöst. Nur das Öffnen mit dem Dialog bekomm ich nicht hin. Probier mal meine Testdatei aus damit Du vielleicht besser nachvollziehen kannst wie das System funktioniert. Habe am Anfang ja beschrieben was man tun muß. Die Schaltfläche um den Explorer zu öffnen funktioniert ja tatelos.

Gruß Jens
Anzeige
AW: Dialog speichern unter aufrufen, mit Pfadsuche
02.01.2004 00:51:03
Jens
Rainer

Falls sich Deine Antwort mit meiner Nachricht überschneiden sollte. Ich muß erst mal in die Kiste. Würde mich freuen wenn Du für mich ne Lösung finden würdest. Ich schau Morgen auf jeden Fall wieder rein. Und , Danke bis jetzt.

Gruß Jens
Noch offen...
02.01.2004 09:46:31
Ramses
Guten Morgen Jens

Jetzt weiss ich was du meinst,... :-( allerdings habe ich auch keine Lösung dafür ausser die Datei direkt mit "Workbook.SaveAs XXX" zu speichern.
Der Dialog lässt sich zwar beim öffnen einstelln, aber nicht beim Speichern.

Sorry, da habe ich auch keine Idee dazu.

Trotzdem noch ein gutes Neues Jahr

Gruss Rainer
Anzeige
Rainers Lösung funktioniert doch
02.01.2004 11:48:03
Martin Beck
Hallo Jens, Hallo Rainer,

ich verstehe das Problem nicht, Rainers Lösung funktioniert doch einwandfrei, wenn man das zweite Makro wie folgt abändert:


Sub Dialog_speichern_unter_öffnen()
'prüfen, welcher Pfad existiert:
Dim VorlPfad As String, VorlVerzeichnis As String
Dim FSo, sWb
Dim i As Byte
'alle angegebenen Pfade durchlaufen
For i = 1 To 200
'zu überprüfendes Hilfsblatt festlegen
VorlPfad = Worksheets("help.expl").Cells(i, 1)
'zu öffnende Datei festlegen
VorlVerzeichnis = VorlPfad & "Start.ini"
'überprüfen, ob die Datei existiert
Set FSo = CreateObject("Scripting.FileSystemObject")
If FSo.FileExists(VorlVerzeichnis) Then
'Meldung ausgeben
'If Bowert = True Then
MsgBox _
"Ordner wurde unter folgendem Pfad gefunden und wird jetzt geöffnet. Pfad lautet:   " & VorlPfad
'prüfen ob "Verzeichnis" schon offen, wenn nicht öffnen:
On Error Resume Next
'Ab hier weiß ich leider nicht mehr weiter wie ich den Code vervollständigen soll
'damit mir der Dialog "speichern unter" mit dem gewünschten Verzeichnis öffnet
Dim stAppName As String
Dim gDir As String
'Pfad öffnen
gDir = VorlPfad
'Dialog öffnen
ChDrive Left(gDir, 2)
ChDir gDir
Application.Dialogs(xlDialogSaveAs).Show
'stAppName = Application.Dialogs(xlDialogSaveAs).Show & gDir
Exit Sub
End If
Next
End Sub


Gruß
Martin Beck
Anzeige
AW: Rainers Lösung funktioniert doch
02.01.2004 21:51:05
Jens
Hallo Martin

Dir auch ein frohes neues Jahr.

Aber ich habe ein Problem mit dem Code, denn er funktioniert eben leider doch nicht so wie ich mir das vorstelle.

Ich weiß es nicht. Vielleicht ist es auch Rechnerabhängig oder Systemabhängig.
Ich habe den Code jetzt wieder so übernommen wie Du Ihn, Martin, hier eingestellt hast.

Die Erkennung, wo die Start Datei liegt, funktioniert wunderbar. Aber eben dieses verdammte Dialogfenster wird mir nur in mit dem Ordner geöffnet, aus dem ich die Mappe.xls gestartet habe. Und das möchte ich ja nicht. Es soll ja der Ordner geöffnet werden, wo die Start.ini Datei gefunden wurde. Und das macht es eben nicht.

Gruß Jens
Anzeige
AW: Rainers Lösung funktioniert doch
02.01.2004 22:51:17
Martin Beck
Hallo Jens,

da es bei mir ging, liegt der Fehler vermutlich hier:

ChDrive Left(gDir, 2)
ChDir gDir

Versuch mal 2 Dinge und berichte über das Ergebnis:

1. Nimm die Zeile

On Error Resume Next

heraus. Gibt es eine Fehlermeldung? Wenn ja, in welcher Zeile und welche Fehlermeldung?

2. Füge mal nach der Zeile

VorlPfad = Worksheets("help.expl").Cells(i, 1)

die Zeile

MsgBox VorlPfad

ein. Was wird als Inhalt von VorlPfad ausgegeben?

Gruß
Martin Beck
Anzeige
AW: Rainers Lösung funktioniert doch
02.01.2004 23:20:18
Jens
Hallo Martin

Also wenn ich die Zeile "On Error Resume Next" deaktiviere, bekomme ich als Fehlermeldung
die Zeile 'Dialog öffnen
ChDrive Left(gDir, 2)
ChDir gDir

und zwar nur die Zeile "ChDir gDir" als Fehler angezeigt.

Wenn ich die MsgBox direkt nach der Zeile "VorlPfad = Worksheets("help.expl").Cells(i, 1)" einfüge, werden mir MsgBox Anzeigen angezeigt über die ganzen vorgebenen Pfade hinweg. Die Anzeige bezieht sich dann aber nicht mehr darauf wo die Start Datei gefunden wurde, sonder mir wird einfach wiedergegeben, was auf meinem Hilfsblatt steht.

Gruß Jens
Anzeige
AW: Rainers Lösung funktioniert doch
03.01.2004 13:36:17
Jens
Hallo Martin

ich bin wieder online.

Gruß Jens
Kann ich nicht nachvollziehen
03.01.2004 16:06:08
Martin Beck
Hallo Jens,

ich habe jetzt noch einmal alles getestet, und zwar mit der von Dir hochgeladenen Datei. Eine Datei Start.ini kreiert, in ein Verzeichnis auf Laufwerk C:\ gespeichert, eine Datei aus einem anderen Ordner als dem Startordner geöffnet und dann das Makro gestartet. Funktioniert alles einwandfrei.

Welche Fehlermeldung (Nr. und Text) kommt denn bei Dir in der Zeile

ChDir gDir

???

Wie ist der Inhalt der Variablen gDir (ich vermute leer)?

Lade im Zweifel noch einmal eine Datei mit dem geänderten Code hoch, die bei Dir nicht funktioniert.

Gruß
Martin Beck
Anzeige
AW: Kann ich nicht nachvollziehen
03.01.2004 17:47:59
Jens
Hallo Martin

Also wenn ich die Zeile "On Error Resume Next" deaktiviere, bekomme ich als Fehlermeldung: Laufzeitfehler "76": Der Text lautet dann: Pfad nicht gefunden.

Wenn ich dann auf Debuggen gehe, bekomm ich die Zeile "ChDir gDir" gelb hinterlegt. Komischer Weise. Während des Debugg Vorgangs bekomme ich ja die Eigenschaften von gDir angezeigt. gDir ist nicht leer sondern zeigt mit immer den richtigen Pfad an.

Ich schick Dir noch mal eine Testdatei mit dem geänderten Pfad und eine Kopie von der original Datei. Du müsstest Dir die Org.Datei nur anpassen. Ich habe sie bewußt nicht verändern wollen, da sich vielleicht noch ein anderer Fehler verbirgt.

Schau mal ob Du was findest. Vielleicht muss ich irgend etwas an Excel umstellen, ich weiß es nicht.

Gruß Jens
Anzeige
AW: Kann ich nicht nachvollziehen
03.01.2004 17:48:33
Jens
Hallo Martin

Hiernoch die Test Datei
AW: Kann ich nicht nachvollziehen
03.01.2004 17:50:25
Jens
Hallo Martin

Hiernoch die Test Datei

https://www.herber.de/bbs/user/2705.xls

Die Datei https://www.herber.de/bbs/user/2706.xls wurde aus Datenschutzgründen gelöscht

Anzeige
AW: Kann ich nicht nachvollziehen
03.01.2004 20:59:09
Chris
Hallo Jens,

ich habe auch dieses Problem mit dem filesaveas-Dialog.

Werde es wohl wie folgt lösen:
Musterdatei in gewünschten Verzeichnis öffnen (evtl. gibt es für den fileopen-dialog ein "verstecktes" Öffnen, so daß dieser nicht angezeigt wird). Habe dies noch nicht geprüft.
Danach sollte das filesaveas-Verzeichnis ebenfalls umgestellt sein. Sehr umständlich, insbesondere im Netzwerk mit vielen Dateizugriffen.

Vielleicht hilft Dir das trotzdem weiter.

Grüsse Christian
Anzeige
AW: Kann ich nicht nachvollziehen
03.01.2004 21:46:22
Jens
Hallo Christian

Gott sei Dank hab ich mal nicht allein dieses Problem. Ich zweifle schon an mir selbst.
Der Gedankengang von Dir klingt logisch. Wäre prima wenn Du eventuell einen Weg dafür finden würdest, denn das übersteigt alles ein bißchen mein Wissen über VBA.

Ich würde mich freuen wenn Du mir Deine Lösung verstellen würdest. Aber vielleicht kommt Martin auch auf nen Dreh wie wir das hinbekommen. Ich war wirklich schon am verzweifeln warum es bei ihm funktioniert und bei mir nicht.

Also, lass was hören.

Gruß Jens
Anzeige
Fehler gefunden - hoffentlich
05.01.2004 12:08:10
Martin Beck
Hallo Jens,

in der Datei 2706.xls heißt es

gDir = VorlVerzeichnis

Richtig wäre

gDir = VorlPfad

In VorlVerzeichnis hängt ja noch der Dateiname an dem Pfad und deswegen gibt es eine Fehlermeldung in der o.g. Codezeile.

Gruß
Martin Beck
AW: Fehler gefunden - hoffentlich
05.01.2004 15:10:27
Jens
Hallo Martin

Danke noch mal für Deine Rückmeldung. Aber ich hatte wohl beim ausprobieren vergessen das wieder umzuschreiben. Aber nichts desto trotz kann ich da reinschreiben was ich will, on nun VorlVerzeichnis, VorlDatei, VorlPfad oder direkt die Start.ini. In keinem Fall öffnet mir der Dialog Speichern unter mit dem entsprechenden Verzeichnis. Ich bekomme trotzdem immer nur das Verzeichnis geöffnet aus dem ich die Datei gestarte habe. Schade, ich hätte das ganz gern noch hin bekommen.

Falls Dir doch noch was einfallen sollte , melde Dich ruhig. Ich schau auch noch mal ins Archiv falls dieser Beitrag nicht mehr aufgeführt wird.

Und trotzdem noch mal Danke für Deine Mühe.

Gruß Jens
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Dialog "Speichern unter" mit Pfadsuche in Excel VBA


Schritt-für-Schritt-Anleitung

Um den Dialog "Speichern unter" in Excel VBA mit einer Pfadsuche zu öffnen, kannst du folgende Schritte befolgen:

  1. Erstelle ein Hilfsblatt (z.B. "help.expl") in deiner Excel-Arbeitsmappe, in dem die verschiedenen Pfade für die Suche nach der Start.ini-Datei aufgeführt sind.
  2. Füge das folgende VBA-Makro in deinen Excel VBA-Editor ein:
Sub Dialog_speichern_unter_öffnen()
    Dim VorlPfad As String, VorlVerzeichnis As String
    Dim FSo As Object, gDir As String
    Dim i As Byte

    'alle angegebenen Pfade durchlaufen
    For i = 1 To 200
        'zu überprüfendes Hilfsblatt festlegen
        VorlPfad = Worksheets("help.expl").Cells(i, 1)
        'zu öffnende Datei festlegen
        VorlVerzeichnis = VorlPfad & "Start.ini"

        'überprüfen, ob die Datei existiert
        Set FSo = CreateObject("Scripting.FileSystemObject")
        If FSo.FileExists(VorlVerzeichnis) Then
            MsgBox "Ordner wurde unter folgendem Pfad gefunden und wird jetzt geöffnet: " & VorlPfad
            'Pfad öffnen
            gDir = VorlPfad
            ChDrive Left(gDir, 2)
            ChDir gDir
            'Dialog öffnen
            Application.Dialogs(xlDialogSaveAs).Show
            Exit Sub
        End If
    Next
End Sub
  1. Passe die Schleifeneinstellung an, um mehr oder weniger Pfade zu prüfen, je nach Anzahl der Pfade in deinem Hilfsblatt.

Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler "76": Pfad nicht gefunden
    Dieser Fehler tritt auf, wenn ChDir gDir aufgerufen wird und der Pfad nicht gültig ist. Stelle sicher, dass der Pfad korrekt in der Hilfsdatei angegeben ist.

  • Problem: Dialog öffnet immer den Standardordner
    Wenn der Dialog "Speichern unter" nicht den gewünschten Ordner öffnet, überprüfe, ob die Variable gDir korrekt gesetzt ist. Stelle sicher, dass sie tatsächlich den gewünschten Pfad enthält.

  • Fehler bei der Dateiprüfung
    Wenn die Datei Start.ini nicht gefunden wird, überprüfe die Pfade im Hilfsblatt und stelle sicher, dass alle Schreibweisen korrekt sind.


Alternative Methoden

Wenn die oben genannte Methode nicht funktioniert oder du eine andere Lösung suchst, kannst du versuchen, die Datei direkt mit Workbook.SaveAs zu speichern. Hier ein Beispiel:

Sub SpeichernDirekt()
    Dim ZielPfad As String
    ZielPfad = "D:\Test\DeineDatei.xlsx"
    ThisWorkbook.SaveAs Filename:=ZielPfad
End Sub

Diese Methode erfordert jedoch, dass du den Pfad im Voraus kennst und setzt dem Dialog "Speichern unter" keine dynamische Pfadsuche voraus.


Praktische Beispiele

Angenommen, du hast mehrere Pfade in deinem Hilfsblatt aufgeführt. Hier ist ein Beispiel für den Inhalt des Hilfsblatts:

A
D:\Test\
E:\Dokumente\
F:\Projekte\

Wenn du das Makro ausführst, wird nach der Start.ini-Datei in diesen Pfaden gesucht. Bei erfolgreicher Auffindung öffnet sich der Dialog "Speichern unter" im gefundenen Verzeichnis.


Tipps für Profis

  • Verwende On Error Resume Next mit Bedacht:
    Diese Zeile kann nützlich sein, um Fehler zu ignorieren, aber sie kann auch dazu führen, dass du wichtige Fehlermeldungen verpasst. Nutze sie vorübergehend, um Fehler zu identifizieren.

  • Debugging mit MsgBox:
    Füge MsgBox-Anweisungen an strategischen Stellen in deinem Code hinzu, um den Wert von Variablen zu prüfen und sicherzustellen, dass der Code wie erwartet funktioniert.

  • Verwende die FileSystemObject-Bibliothek:
    Diese Bibliothek erleichtert die Arbeit mit Dateien und Verzeichnissen. Sie ist besonders nützlich, um die Existenz von Dateien zu prüfen.


FAQ: Häufige Fragen

1. Warum öffnet sich der Dialog "Speichern unter" nicht im erwarteten Verzeichnis?
Stelle sicher, dass der Pfad, den du in gDir setzt, tatsächlich existiert. Überprüfe die Schreibweise und die Existenz des Pfades.

2. Kann ich die Pfade dynamisch ändern?
Ja, du kannst die Pfade in deinem Hilfsblatt jederzeit ändern. Das Makro wird die neuen Pfade bei der nächsten Ausführung berücksichtigen.

3. Gibt es eine Möglichkeit, mehrere Dateiformate beim Speichern auszuwählen?
Ja, du kannst Application.Dialogs(xlDialogSaveAs).Show erweitern, um die Dateiformate anzupassen, indem du die entsprechenden Parameter hinzufügst.

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