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

dialog FileSaveAs mit pfad einer ebene höher ...

Forumthread: dialog FileSaveAs mit pfad einer ebene höher ...

dialog FileSaveAs mit pfad einer ebene höher ...
27.08.2003 11:55:38
Peter
... als die datei, welche das script ausführt.

# ausgangspunkt:
eine code-datei (excel) (zentraler ordner)
eine indexdatei (excel) mit makros aus der code-datei (indexdatenordner)
viele einzeldateien (excel) (projektordner)

die folderstruktur (kann ich nicht beeinflussen, daher als fix anzusehen)
\KUNDENPFAD
\KUNDENPFAD\INDEXDATENORDNER
\KUNDENPFAD\PROJEKTORDNER1
\KUNDENPFAD\PROJEKTORDNER2
...
\KUNDENPFAD\PROJEKTORDNER99
\KUNDENPFAD\PROJEKTORDNER100

ich erstelle aus den eingaben in der indexdatei ein ausgefülltes template, welches dann in einem der projektordner gespeichert werden soll. dazu soll ein Datei speichern unter-dialog aufgehen, welcher also auf der ebene der projektordner (und damit eine ebene über der indexdatei) steht, so daß nur noch der projektordner gewählt werden braucht (filename wird aus variablen vorerstellt).

strFN = "..\" & ActiveWorkbook.Path & "\" & strDatei
xlDateiName = Application.GetSaveAsFilename( _
InitialFilename:=strFN, ... bringt leider nichts ...

könnt ihr mir helfen?

danke!
peter
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: dialog FileSaveAs mit pfad einer ebene höher ...
27.08.2003 12:52:05
ChrisL
Hi Peter

In XL 2000 könntest du auch mit InStrRev arbeiten, aber nachstehende Variante funktioniert ab XL 97...

Option Explicit


Sub Peter()
Dim Pfad As String, xlDateiName As String
Pfad = ThisWorkbook.Path
Do While InStr(Pfad, "\") > 0
Pfad = Right(Pfad, Len(Pfad) - InStr(Pfad, "\"))
Loop
Pfad = Left(ThisWorkbook.Path, Len(ThisWorkbook.Path) - Len(Pfad))
ChDir Pfad
xlDateiName = Application.GetSaveAsFilename
End Sub

Gruss
Chris
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 "FileSaveAs" mit Pfad einer Ebene höher in Excel


Schritt-für-Schritt-Anleitung

Um den "Datei speichern unter"-Dialog in Excel so zu konfigurieren, dass er auf einer Ebene über der aktuellen Datei öffnet, kannst du den folgenden VBA-Code verwenden. Dieser Code funktioniert ab Excel 97 und nutzt die InStr- und ChDir-Funktionen, um den Pfad zu ändern.

  1. Öffne deine Excel-Datei.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul ein: Rechtsklick auf „VBAProject (DeineDatei)“ > Einfügen > Modul.
  4. Kopiere den folgenden Code in das Modul:
Sub FileSaveAsDialog()
    Dim Pfad As String, xlDateiName As String
    Pfad = ThisWorkbook.Path
    Do While InStr(Pfad, "\") > 0
        Pfad = Right(Pfad, Len(Pfad) - InStr(Pfad, "\"))
    Loop
    Pfad = Left(ThisWorkbook.Path, Len(ThisWorkbook.Path) - Len(Pfad))
    ChDir Pfad
    xlDateiName = Application.GetSaveAsFilename
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Starte das Makro über Entwicklertools > Makros und wähle FileSaveAsDialog.

Jetzt öffnet sich der "Datei speichern unter"-Dialog in dem gewünschten Ordner.


Häufige Fehler und Lösungen

  • Fehler: Der Dialog öffnet sich nicht im gewünschten Ordner.
    Lösung: Stelle sicher, dass der Pfad korrekt ermittelt wird. Verwende Debug.Print Pfad, um den aktuellen Pfad im Direktfenster anzuzeigen.

  • Fehler: Makro wird nicht ausgeführt.
    Lösung: Überprüfe, ob die Makros in deinen Excel-Einstellungen aktiviert sind.


Alternative Methoden

Eine alternative Methode wäre die Verwendung der Application.FileDialog-Methode, die eine benutzerfreundliche Oberfläche bietet. Hier ein Beispiel:

Sub SaveFileDialog()
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogSaveAs)
    fd.InitialFileName = "..\" & ThisWorkbook.Name
    If fd.Show = -1 Then
        ' Hier kannst du den Speicherort verwenden
        MsgBox "Datei wird gespeichert unter: " & fd.SelectedItems(1)
    End If
End Sub

Praktische Beispiele

Nehmen wir an, du willst eine Excel-Vorlage in einem Projektordner speichern. Du kannst den obigen Code anpassen, um den Dateinamen dynamisch zu erstellen:

Sub SaveTemplate()
    Dim Pfad As String, strDatei As String
    strDatei = "MeinTemplate_" & Format(Now(), "YYYYMMDD") & ".xlsx"
    Pfad = ThisWorkbook.Path
    ChDir Left(Pfad, InStrRev(Pfad, "\") - 1)
    Application.GetSaveAsFilename InitialFilename:=strDatei
End Sub

Tipps für Profis

  • Verwendung von Fehlerbehandlungen: Integriere On Error Resume Next, um unerwartete Fehler abzufangen.
  • Optimierung der Benutzeroberfläche: Gestalte den Dialog benutzerfreundlicher, indem du Anweisungen oder Hinweise im Makro hinzufügst.

FAQ: Häufige Fragen

1. Warum funktioniert der Code nicht in meiner Excel-Version?
Der Code ist ab Excel 97 kompatibel. Stelle sicher, dass deine Version nicht älter ist.

2. Kann ich den Dialog auch in einer anderen Sprache anzeigen lassen?
Ja, die Sprache des Dialogs richtet sich nach den Spracheinstellungen deiner Excel-Installation.

3. Wie kann ich den Standardpfad ändern?
Ändere die Zeile ChDir Pfad, um einen anderen Pfad anzugeben, wenn du den Dialog öffnest.

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