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

Forumthread: SaveCopyAs

SaveCopyAs
12.04.2005 11:09:20
83Rose
Hallo!
Ich möchte eine Datei sowohl an Ihrem aktuellen Ort als auch eine Kopie auf einem Server speichern.
Wenn ich nur über SaveAs zuerst am aktuellen Ort speichere und dann auf dem Server funktioniert es einwandfrei, allerdings wird dann die Datei auf dem Server zur aktuell geöffneten, das möchte ich jedoch nicht.
so wie ich es nicht möchte funktioniert es:

Sub Makro1()
' Datei an aktuellem Ort speichern
ActiveWorkbook.Save
' Datei im Portal speichern
Dim Datname
Datname = <a href=""http://bdtportal.bdt-rw.de/sites/azubi/Shared%20Documents/Formulare%20BDT/Reichweiten"">"http://bdtportal.bdt-rw.de/sites/azubi/Shared%20Documents/Formulare%20BDT/Reichweiten"</a>
ActiveWorkbook.SaveAs Filename:=Datname & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
End Sub


und so geht es nicht:

Sub Makro1()
' Datei an aktuellem Ort speichern
ActiveWorkbook.Save
' Datei im Portal speichern
Dim Datname
Datname = <a href=""http://bdtportal.bdt-rw.de/sites/azubi/Shared%20Documents/Formulare%20BDT/Reichweiten"">"http://bdtportal.bdt-rw.de/sites/azubi/Shared%20Documents/Formulare%20BDT/Reichweiten"</a>
ActiveWorkbook.SaveCopyAs Filename:=Datname & ".xls", FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
End Sub


Wo liegt mein Fehler, bzw. wie kann ich das Ganze anders lösen?
Gruß,
Ellen
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SaveCopyAs
12.04.2005 11:14:29
83Rose
bei beiden Codes kommt bei Datname natürlich das "a href"......"/a und die ganzen Dreieckchen weg, das liegt am html dieser Seite hier, das habe ich nicht miteingegeben.
Gruß,
Ellen
AW: SaveCopyAs
12.04.2005 12:24:08
MichaV
Dim strAlterName As String
Hi,
ähnliches Problem hatte ich auch mal. Mit Savecopyas kannst Du nicht mehr als Filename angeben.
Speichere zuerst auf dem Server, und dann am alten Ort. Musst Dir nur alten Dateipfad merken lasssen. So würde es gehen:
With ActiveWorkbook
strAlterName = .Path & "\" & .Name
Application.DisplayAlerts = False 'vorhande Dateien werden ohne Rückfrage überschrieben!
.SaveAs Filename:="d:\test.xls" 'oder auf Deinem Server
.SaveAs strAlterName 'am alten Ort
Application.DisplayAlerts = True

End With
Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: SaveCopyAs
12.04.2005 13:21:32
83Rose
Hi!
Vielen Dank, da hätte ich auch selbst drauf kommen können.
Kleiner Tipp, für das
= .Path & "\" & .Name
verwende ich immer:
= Application.ActiveWorkbook.FullName
Gruß,
Ellen
AW: SaveCopyAs
12.04.2005 14:09:03
MichaV
Hi,
danke für die Rückmeldung und für den Tip, hätt ich auch selber drauf kommen können ;o)
Gruß- Micha
Anzeige
AW: SaveCopyAs
12.04.2005 12:12:13
Franz W.
Hallo Ellen,
probier das mal aus, vielleicht kannst du damit was anfangen. Das Makro speichert die Datei und legt gleichzeitig eine Sicherungsdatei mit Datum und Uhrzeit an - und zwar so wie es hier steht im selben Ordner wie die Datei:
Option Explicit

Sub Sicherungskopie_mit_Datum_und_Uhrzeit()
Dim myPath As String
Dim myName As String
Dim myNameOEnd As String
Dim myNewName As String
'Pfad der aufrufenden Mappe:
myPath = ActiveWorkbook.Path & "\"
'Name der aufrufenden Mappe ohne Pfad :
myName = ActiveWorkbook.Name
'Name der aufrufenden Mappe ohne Endung :
myNameOEnd = Replace(myName, Right(myName, 4), "")
'neuer Dateiname mit Datum ("JJ.TT.MM.") und Uhrzeit ("hh:mm") :
myNewName = myPath & myNameOEnd & Format(Date, "yyyy-mm-dd") & "   " & Format(Time, "hh-mm") & ".xls"
ActiveWorkbook.Save
ActiveWorkbook.SaveCopyAs myNewName
End Sub


Den von dir gewünschten Pfad trägst du in die Variable "myPath" ein.

Grüße
Franz
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Speichern mit SaveCopyAs in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei sowohl am aktuellen Ort als auch auf einem Server zu speichern, kannst du das SaveCopyAs-Kommando in VBA verwenden. Hier ist eine einfache Anleitung:

  1. Öffne den Visual Basic-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Gehe auf Einfügen > Modul.

  3. Kopiere den folgenden Code:

    Sub SpeichernMitKopie()
       Dim Datname As String
    
       ' Datei an aktuellem Ort speichern
       ActiveWorkbook.Save
    
       ' Pfad zur Serverdatei festlegen
       Datname = "http://deinserver/pfad/zur/datei"
    
       ' Datei auf dem Server speichern
       ActiveWorkbook.SaveCopyAs Filename:=Datname & ".xls", FileFormat:=xlNormal
    End Sub
  4. Ändere den Dateipfad: Ersetze http://deinserver/pfad/zur/datei mit dem gewünschten Pfad.

  5. Führe das Makro aus: Klicke auf F5 oder gehe zurück zu Excel und führe das Makro aus.


Häufige Fehler und Lösungen

  1. Fehler: "Das angegebene Dateiformat ist ungültig"

    • Lösung: Stelle sicher, dass du das richtige FileFormat verwendest. Zum Beispiel: FileFormat:=xlNormal für .xls oder FileFormat:=xlOpenXMLWorkbook für .xlsx.
  2. Fehler: "Datei kann nicht gespeichert werden"

    • Lösung: Überprüfe die Berechtigungen für den Zielordner oder Server. Du benötigst Schreibzugriff.
  3. Fehler: Aktive Arbeitsmappe wird überschrieben

    • Lösung: Verwende ActiveWorkbook.SaveCopyAs anstelle von ActiveWorkbook.SaveAs, um die aktuelle Datei nicht zu überschreiben.

Alternative Methoden

Es gibt verschiedene Wege, Dateien in Excel VBA zu speichern:

  • Verwenden von ThisWorkbook.SaveCopyAs:

    ThisWorkbook.SaveCopyAs "C:\Pfad\zu\deiner\Datei.xlsx"
  • Kombination von Save und SaveCopyAs:

    ActiveWorkbook.Save
    ActiveWorkbook.SaveCopyAs "C:\Pfad\zu\deiner\Kopie.xlsx"

Diese Methoden ermöglichen es dir, Kopien der Arbeitsmappe an verschiedenen Orten zu speichern.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du das SaveCopyAs verwenden kannst:

  1. Speichern mit Datum und Uhrzeit:

    Sub SpeichernMitDatum()
       Dim myPath As String
       Dim myNewName As String
    
       myPath = ActiveWorkbook.Path & "\"
       myNewName = myPath & "Backup_" & Format(Now, "yyyy-mm-dd_hh-mm") & ".xls"
    
       ActiveWorkbook.Save
       ActiveWorkbook.SaveCopyAs myNewName
    End Sub
  2. Speichern auf einem Server:

    Sub SpeichernAufServer()
       Dim serverPath As String
    
       serverPath = "http://deinserver/pfad/zur/datei"
       ActiveWorkbook.SaveCopyAs serverPath & "\Backup_" & Format(Date, "yyyy-mm-dd") & ".xls"
    End Sub

Tipps für Profis

  • Verwende Application.DisplayAlerts = False um Warnmeldungen beim Überschreiben von Dateien zu vermeiden.

  • Speichere regelmäßig Sicherungskopien: Entwickle eine Routine, um Sicherungsdateien zu erstellen, insbesondere vor größeren Änderungen.

  • Teste deine Makros in einer Testumgebung, bevor du sie in produktiven Umgebungen einsetzt.


FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen SaveCopyAs und SaveAs? SaveCopyAs erstellt eine Kopie der Arbeitsmappe und lässt die aktuelle Arbeitsmappe unverändert. SaveAs speichert die Arbeitsmappe unter einem neuen Namen und kann die aktuelle Datei überschreiben.

2. Kann ich SaveCopyAs verwenden, um im .xlsx-Format zu speichern? Ja, du kannst SaveCopyAs verwenden, um im .xlsx-Format zu speichern, indem du das FileFormat entsprechend anpasst: FileFormat:=xlOpenXMLWorkbook.

3. Wie kann ich den Dateipfad dynamisch anpassen? Verwende ActiveWorkbook.Path, um den aktuellen Pfad der Arbeitsmappe zu erhalten, und kombiniere ihn mit dem Dateinamen, um dynamische Pfade zu erstellen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige