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

SaveAs speichert nicht in aktuellem Ordner

Forumthread: SaveAs speichert nicht in aktuellem Ordner

SaveAs speichert nicht in aktuellem Ordner
Perry
Hallo Experten,
ich möchte, dass sich eine Arbeitsmappe unter neuem Namen selbst speichert.
Dabei soll der Neue Name durch Userdefinierte Eingaben determiniert werden.
fname = "K " & Kursnummer & " - " & Blocknummer & ". Block (" & Anfangsdatum & " - " & Enddatum & ").xlsm"
ActiveWorkbook.SaveAs Filename:=fname
Klappt soweit auch alles, nur entgegen der Angaben in meinem Excel-Buch und in der Ecxel-Hilfe wird die neue Mappe nicht im gleichen Ordner neu erstellt, sondern in 'Eigene Dateien' abgespeichert.
Benutze Excel 2007 unter MS xp. Weiß jemand woran es liegt?
Und by the way - wenn ich versuche, das Problem zu umgehen, indem ich den Vorgefertigeten User-Dialog
xlDialogSaveAs
verwende, kann ich dabei einen Default-Text definieren?
Gruß & Dank
P.
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
VBA: Datei gezielt in bestimmten Ordner speichern
09.07.2011 17:31:31
NoNet
Hallo Perry,
entweder wechselst Du zuvor gezielt in einen bestimmten Ordner :
CHDIR "C:\Benutzer\Perry\Documents\XL-Dokumente"
oder Du gibst den Pfad in SaveAs Befehl mit an :
ActiveWorkbook.SaveAs "C:\Benutzer\Perry\Documents\XL-Dokumente\" & fname
Oder Du rufst den "Speichern unter..." Dialog mit vorherigem Ordner-Wechsel und Angabe eines vorgegebenen Namens auf :
CHDIR "C:\Benutzer\Perry\Documents\XL-Dokumente"
Application.Dialogs(xlDialogSaveAs).Show fname

Gruß, NoNet
Anzeige
AW: VBA: Datei gezielt in bestimmten Ordner speichern
09.07.2011 18:28:24
Perry
Danke NoNet,
das Problem war aber, dass mir der Pfad-/Ordnername, in dem die neue Datei gespeichert werden soll, gar nict bekannt ist. Denn der User soll die Vorlage zunächst in einem Ordner seiner Wahl plazieren, und dann dort jeweils unter neuem Namen abspeicher können...
Habe das Problem aber mittlerweile lösen können, indem ich zunächst den aktuellen Pfadnamen auslese und einer Variable zuweise:
myPath = ThisWorkbook.Path
Dann kann ich das Workbook mit dem Passenden Pfad und dem Userdefinierten Namen abspeichern:
ActiveWorkbook.SaveAs (myPath & "\" & fname)
Grüße P.
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Arbeitsmappe mit VBA im aktuellen Ordner speichern


Schritt-für-Schritt-Anleitung

Um eine Arbeitsmappe in Excel mit VBA im aktuellen Ordner zu speichern, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge einen neuen Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deine Arbeitsmappe)" und wähle Einfügen > Modul.

  3. Schreibe den Code: Füge den folgenden VBA-Code in das Modul ein:

    Sub SpeichernImAktuellenOrdner()
       Dim fname As String
       Dim myPath As String
    
       ' Benutzerdefinierte Eingaben
       Dim Kursnummer As String
       Dim Blocknummer As String
       Dim Anfangsdatum As String
       Dim Enddatum As String
    
       Kursnummer = InputBox("Gib die Kursnummer ein:")
       Blocknummer = InputBox("Gib die Blocknummer ein:")
       Anfangsdatum = InputBox("Gib das Anfangsdatum ein:")
       Enddatum = InputBox("Gib das Enddatum ein:")
    
       ' Dateiname zusammenstellen
       fname = "K " & Kursnummer & " - " & Blocknummer & " - " & _
               "(" & Anfangsdatum & " - " & Enddatum & ").xlsm"
    
       ' Aktuellen Pfad auslesen
       myPath = ThisWorkbook.Path
    
       ' Arbeitsmappe speichern
       ActiveWorkbook.SaveAs Filename:=myPath & "\" & fname
    End Sub
  4. Führe den Code aus: Schließe den VBA-Editor und führe das Makro aus, um die Arbeitsmappe mit ActiveWorkbook.SaveAs im aktuellen Ordner zu speichern.


Häufige Fehler und Lösungen

  • Fehler: Datei wird in 'Eigene Dateien' gespeichert
    Lösung: Stelle sicher, dass du den aktuellen Pfad mit ThisWorkbook.Path ausliest, bevor du ActiveWorkbook.SaveAs verwendest.

  • Fehler: Ungültiger Dateiname
    Lösung: Überprüfe die Eingaben des Benutzers und stelle sicher, dass der Dateiname keine ungültigen Zeichen enthält (z.B. \ / : * ? " < > |).


Alternative Methoden

  1. Direkte Pfadangabe: Du kannst den Speicherort auch direkt im SaveAs Befehl angeben. Zum Beispiel:

    ActiveWorkbook.SaveAs "C:\Benutzer\Perry\Documents\XL-Dokumente\" & fname
  2. Speichern unter Dialog: Wenn du den Benutzer den Speicherort auswählen lassen möchtest, kannst du den xlDialogSaveAs Dialog verwenden:

    Application.Dialogs(xlDialogSaveAs).Show fname

Praktische Beispiele

  • Beispiel 1: Speichern einer Datei mit vordefinierten Parametern:

    Sub SpeichernMitVordefiniertenWerten()
       Dim fname As String
       fname = "Bericht.xlsx"
       ActiveWorkbook.SaveAs Filename:="C:\Berichte\" & fname
    End Sub
  • Beispiel 2: Nutzung des Dialogs, um den Speicherort zu wählen:

    Sub SpeichernMitDialog()
       Dim fname As String
       fname = "MeinDokument.docx"
       Application.Dialogs(xlDialogSaveAs).Show fname
    End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft, Fehler zu vermeiden.

  • Verwende Error Handling in deinem Code, um Probleme beim Speichern zu identifizieren und zu behandeln. Beispiel:

    On Error GoTo Fehlerbehandlung
    ActiveWorkbook.SaveAs Filename:=myPath & "\" & fname
    Exit Sub
    
    Fehlerbehandlung:
    MsgBox "Fehler beim Speichern: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich den Dateinamen dynamisch anpassen?
Du kannst Eingaben über InputBox abfragen und den Dateinamen entsprechend zusammensetzen, wie im Schritt-für-Schritt-Beispiel gezeigt.

2. Kann ich den Speicherort festlegen, ohne den Benutzer zu fragen?
Ja, indem du den vollständigen Pfad im SaveAs Befehl angibst, z.B. ActiveWorkbook.SaveAs "C:\DeinPfad\" & fname.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige