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

Speichern unter VBA mit Pfad

Forumthread: Speichern unter VBA mit Pfad

Speichern unter VBA mit Pfad
09.07.2003 16:00:26
tom
Hallo allerseits,
ich habe im Archiv gestöbert und das untenstehende VBA gefunden, mit dem man nummeriert und mit Datum als Dateiname gespeichert wird.
Was ich nicht hinbekomme, ist, hier einen Pfad anzugeben. So wie es jetzt ist, speichern die Dateien im Hauptverzeichnis. Möglich wäre ein fester Pfad, oder auch der Standardpfad, noch besser wäre evtl. eine Auswahlabfrage.
Weiß jemand, wie ich den Code da reinschreiben muß?
Vielen Dank und schöne Grüße,
tom

Sub speichern()
' speichern Makro
' Makro am 09.07.2003 von sie er aufgezeichnet
Dim pfad As String
pfad = ThisWorkbook.Path
Dim i As Long
With Application.FileSearch
.LookIn = pfad
If .Execute > 0 Then i = .FoundFiles.Count
i = i + 1
ActiveWorkbook.SaveAs Filename:=pfad & "\" & Format(i, "00000") & "-" & Format(Date, "YYYY-MM-DD") & ".xls"
End With
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Merci & Bsp & kleine Zusatzfrage
09.07.2003 18:02:11
tom
Hallo Andre und Bernhard,
vielen Dank für Eure Tips. Ich habe es jetzt so gelöst wie Andre vorgeschlagen hat. Ich hätte gerne noch am Anfang des Dateinamensvorschlags ein Wort (Bestellung). Ich habe versucht es mit Anführungsstrichen einzusetzen, also so:
ActiveWorkbook.SaveAs Filename:="Bestellung" & pfad & ...
aber das ergibt nur eine Fehlermeldung. Sicherlich wißt Ihr wie das richtig geht?
Merci vielmals und Grüße,
tom
Dim pfad As String
pfad = "d:\_c\plattsalat\warenwirtschaft\2 lieferlisten\auto"
Dim i As Long
With Application.FileSearch
.LookIn = pfad
If .Execute > 0 Then i = .FoundFiles.Count
i = i + 1
ActiveWorkbook.SaveAs Filename:=pfad & "\" & Format(i, "00000") & "-" & Format(Date, "YYYY-MM-DD") & ".xls"
End With
End Sub

Anzeige
AW: Speichern unter VBA mit Pfad
09.07.2003 17:29:32
Bernhard
hallo Tom,
so mache ich das immmer:
' Speicherdialog zur Bestimmung des Dateinamens aufrufen
saveas_filename = Application.GetSaveAsFilename(initialFilename:=ActiveWorkbook.Path & "\" & strFileSaveName, fileFilter:="MyData(*.xls), *.xls")

' falls Anwender auf Abbrechen gedrückt hat:
If saveas_filename = False Then
strTxt = "Sie haben den Speichervorgang abgebrochen. Die Daten wurden nicht exportiert!" & Chr(13) & Chr(13) & _
"----------------------------------------------------------" & Chr(13) & Chr(13) & _
"The save process has been aborted by you. The data has not been exported!"
MsgBox strTxt, vbCritical
Exit Sub
End If

'Dateiname aus Komplettpfad extrahieren
lngStringLaenge = Len(saveas_filename)
For i = lngStringLaenge To 1 Step -1
'String rückswärts aufbauen bis Slash kommt
If Left(Mid(saveas_filename, i), 1) = "\" Then
strFilename = Mid(saveas_filename, i + 1)
Exit For
End If
Next i
ActiveWorkbook.SaveAs Filename:=saveas_filename, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
Hoffe das hilft dir weiter...
Gruss,
Bernhard

Anzeige
AW: Speichern unter VBA mit Pfad
09.07.2003 18:03:20
tom
Hallo Andre und Bernhard,
vielen Dank für Eure Tips. Ich habe es jetzt so gelöst wie Andre vorgeschlagen hat. Ich hätte gerne noch am Anfang des Dateinamensvorschlags ein Wort (Bestellung). Ich habe versucht es mit Anführungsstrichen einzusetzen, also so:
ActiveWorkbook.SaveAs Filename:="Bestellung" & pfad & ...
aber das ergibt nur eine Fehlermeldung. Sicherlich wißt Ihr wie das richtig geht?
Merci vielmals und Grüße,
tom
Dim pfad As String
pfad = "d:\_c\plattsalat\warenwirtschaft\2 lieferlisten\auto"
Dim i As Long
With Application.FileSearch
.LookIn = pfad
If .Execute > 0 Then i = .FoundFiles.Count
i = i + 1
ActiveWorkbook.SaveAs Filename:=pfad & "\" & Format(i, "00000") & "-" & Format(Date, "YYYY-MM-DD") & ".xls"
End With
End Sub

Anzeige
AW: Speichern unter VBA mit Pfad
09.07.2003 17:27:36
andre
hallo tom,
der pfad wird in diesem makro mit ThisWorkbook.Path festgelegt. Wenn Du etwas anderes möchtest, musst du es anders festlegen, z.b.
Dim speicherpfad as string
...
Speicherpfad="c:\hierhinein\meinemappen"
...
...SaveAs Filename:=Speicherpfad...
das verzeichnis muss in diesem fall aber existieren.
gruss andre

Anzeige
AW: Speichern unter VBA mit Pfad
09.07.2003 18:03:46
tom
Hallo Andre und Bernhard,
vielen Dank für Eure Tips. Ich habe es jetzt so gelöst wie Andre vorgeschlagen hat. Ich hätte gerne noch am Anfang des Dateinamensvorschlags ein Wort (Bestellung). Ich habe versucht es mit Anführungsstrichen einzusetzen, also so:
ActiveWorkbook.SaveAs Filename:="Bestellung" & pfad & ...
aber das ergibt nur eine Fehlermeldung. Sicherlich wißt Ihr wie das richtig geht?
Merci vielmals und Grüße,
tom
Dim pfad As String
pfad = "d:\_c\plattsalat\warenwirtschaft\2 lieferlisten\auto"
Dim i As Long
With Application.FileSearch
.LookIn = pfad
If .Execute > 0 Then i = .FoundFiles.Count
i = i + 1
ActiveWorkbook.SaveAs Filename:=pfad & "\" & Format(i, "00000") & "-" & Format(Date, "YYYY-MM-DD") & ".xls"
End With
End Sub

Anzeige
AW: Speichern unter VBA mit Pfad
10.07.2003 15:26:41
andre
hallo tom,
das würde so gehen:
ActiveWorkbook.SaveAs Filename:=pfad & "\" & "Bestellung" & Format(i, "00000") & "-" & Format(Date, "YYYY-MM-DD") & ".xls"
gruss andre

mille grazie ...
10.07.2003 19:08:32
tom
funktioniert wunderbar!

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Speichern unter VBA mit Pfad


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei mit VBA unter einem bestimmten Pfad und Dateinamen zu speichern, kannst du folgenden Code verwenden:

Sub speichern()
    Dim pfad As String
    pfad = "D:\Dein\Pfad\Hier" ' Setze den gewünschten Pfad
    Dim i As Long
    With Application.FileSearch
        .LookIn = pfad
        If .Execute > 0 Then i = .FoundFiles.Count
        i = i + 1
        ActiveWorkbook.SaveAs Filename:=pfad & "\" & "Bestellung" & Format(i, "00000") & "-" & Format(Date, "YYYY-MM-DD") & ".xls"
    End With
End Sub

In diesem Beispiel wird die Datei im angegebenen Pfad gespeichert, und der Dateiname enthält das Wort „Bestellung“, gefolgt von einer fortlaufenden Nummer und dem aktuellen Datum.


Häufige Fehler und Lösungen

  1. Fehler: "Pfad nicht gefunden"

    • Lösung: Stelle sicher, dass der angegebene Pfad tatsächlich existiert. Du kannst den Pfad mit Debug.Print pfad überprüfen.
  2. Fehler: "Dateiname ungültig"

    • Lösung: Vermeide ungültige Zeichen im Dateinamen, wie z.B. *, ?, <, >, |.
  3. Fehler: "Speichervorgang abgebrochen"

    • Lösung: Überprüfe, ob der Benutzer den Speicherdialog abgebrochen hat. Du kannst eine Abfrage einfügen, um dies zu überprüfen.

Alternative Methoden

Einige alternative Methoden, um das Speichern einer Excel-Datei in VBA zu realisieren, sind:

  • Speicherdialog verwenden:

    Dim saveas_filename As Variant
    saveas_filename = Application.GetSaveAsFilename(InitialFileName:="DeinDateiname.xls", FileFilter:="Excel Files (*.xls), *.xls")
    
    If saveas_filename <> False Then
      ActiveWorkbook.SaveAs Filename:=saveas_filename
    End If
  • Speichern im aktuellen Verzeichnis:

    ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path & "\DeinDateiname.xls"

Praktische Beispiele

Hier sind einige praktische Beispiele zur Anwendung der Speichern unter Funktion in VBA:

  1. Datei mit Datum im Namen speichern:

    ActiveWorkbook.SaveAs Filename:="Bericht_" & Format(Date, "YYYY-MM-DD") & ".xls"
  2. Speichern unter einem benutzerdefinierten Pfad:

    Dim speicherpfad As String
    speicherpfad = "C:\Benutzer\DeinName\Documents"
    ActiveWorkbook.SaveAs Filename:=speicherpfad & "\Bericht.xls"

Tipps für Profis

  • Nutze Application.DisplayAlerts = False, um Warnmeldungen beim Überschreiben von Dateien zu vermeiden.
  • Implementiere Fehlerbehandlung mit On Error Resume Next, um den Code robuster zu gestalten.
  • Verwende Workbook.SaveCopyAs, wenn du eine Kopie der Arbeitsmappe speichern möchtest, ohne sie zu schließen.

FAQ: Häufige Fragen

1. Wie kann ich den Pfad dynamisch festlegen? Du kannst ThisWorkbook.Path verwenden, um den Pfad der aktuellen Arbeitsmappe zu beziehen.

2. Wie kann ich den Dateityp beim Speichern vorgeben? Verwende den Parameter FileFormat in der SaveAs-Methode, z.B. FileFormat:=xlWorkbookDefault für die Standard-Excel-Datei.

3. Was mache ich, wenn ich eine Datei unter einem anderen Namen speichern möchte? Ändere einfach den Filename-Parameter in der SaveAs-Methode zu deinem gewünschten Namen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige