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

Forumthread: VBA SaveCopyAs

VBA SaveCopyAs
01.08.2023 22:53:50
PeTeR
Hallo VBA-Profis,
ich brauche bitte mal wieder eure Hilfe:
1) Ich habe eine Datei "Original.xlsB"
2) Das Makro in der Datei "Original.xlsB" soll nun eine Kopie der Datei erstellen: "Kopie.xlsX" und in dieser Kopie arbeiten, so dass eben nur in der Kopie gearbeitet wird, aber keinesfalls im Original.
Beim SaveCopyAs kann man kein neues Dateiformat angeben, ausserdem ist die Kopie danach nicht geöffnet :-(
Vielen Dank für eure Unterstützung!
VG
PeTeR
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
VBA SaveCopyAs
02.08.2023 16:50:02
daniel
Hi
SaveCopyAs speichert immer eine 1:1-Kopie der Datei, dh. du kannst das Dateiformat nicht ändern.

speichere einfach die Datei mit SaveAs "neuerdateiname ohne Endung", Dateiformat
damit hast du die Datei nicht nur auch als Kopie zum Original gespeichert, sondern du befindest sich auch schon sofort in dieser Kopie und arbeitest in dieser.
Das normale SaveAs macht eigentlich genau das was deiner Beschreibung nach willst.
(Komplizierter wirds, wenn man eine Datei als Kopie in einem anderen Dateiformat speichern will, aber dann im Original weiterarbeiten möchte)
Einziger Problempunkt: die Makros sind vorerst weiterhin gültig, die werden nur in der gespeicherten Datei gelöscht, nicht aber in der Version im Speicher.
Dh erst beim Wiederöffnen einer xlsx wird das Löschen der Makros wirksam.

Um das Überschreiben der Originaldatei zu verhindern, würde ich für diese über den Dateiexplorer den Schreibschutz setzen.
Das ist einfach nur ein Häkchen in den Dateieigenschaften, das gesetzt werden kann. Es hat zwar keinen Passwortschutz, aber Zugang schützt in der Regel ausreichend vor unabsichtlicher Änderung.

Gruß Daniel
Anzeige
VBA SaveCopyAs
02.08.2023 07:53:25
Peter Trawinski
Ist was du suchst nicht einfach "Save as"? Speichert unter neuem Namen, ggf. anderes Format, schließt das Original und befindet sich in der Kopie!?
VBA SaveCopyAs
02.08.2023 16:35:16
onur
UND: Es wäre nicht wirklich eine Kopie, da ohne Makros.
" Das Makro .... soll nun eine Kopie der Datei erstellen .... und in dieser Kopie arbeiten" - DAS geht nur, wenn beide Versionen der Datei geöffnet sind. Wenn die xlsb geschlossen wird, hört das Makro logischerweise auf, zu arbeiten.
Es geht nur so:
Kopie speichern
Kopie öffnen (und aktivieren)
Makro ab da so umschreiben, daß alle Dateizugriffe sich nur noch auf "ActiveWorkbook" beziehen.

Deswegen fragte ich ja auch, was er mit "weiterarbeiten" meint....
Wenn er aber meint, dass die xlsb-Datei geschlossen wird und das Makro in der xlsx weiterarbeiten soll, kann er es vergessen, da ja xlsx keine Makros haben.
Anzeige
VBA SaveCopyAs
02.08.2023 16:13:47
Oberschlumpf
DA hätten WIR auch drauf kommen können!

PeTeR sucht ne Lösung mit SaveCopyAs

Aber eine KOPIE! kann nicht im anderen Format gespeichert werden - is ja ne Kopie!

Der andere Peter hat natürlich recht mit "Save As" ! nur er hat recht, sonst niemand hier.
AW: VBA SaveCopyAs
01.08.2023 23:03:50
onur
"Beim SaveCopyAs kann man kein neues Dateiformat angeben" ?
Wer hat dir das denn erzählt?
"so dass eben nur in der Kopie gearbeitet wird" ?
Was genau soll das heissen?
Anzeige
VBA SaveCopyAs
02.08.2023 08:55:42
PeTeR
Hallo Onur,
das erzählt mir die MS-Hilfe und diverse Foren. SaveCopyAs hat nur einen Parameter: Filename
Aber du kannst mir gerne den Befehl posten: SaveCopyAs MIT Fileformat
VBA SaveCopyAs
02.08.2023 10:19:12
onur
Aber meine zweite Frage hast du noch nicht beantwortet...
VBA SaveCopyAs
02.08.2023 09:56:56
onur
FILENAME kann jede beliebige Endung haben - xlsb, xlsm oder xlsx.
Anzeige
VBA SaveCopyAs
02.08.2023 10:12:18
onur
Korrektur: Hast Recht, Excel speichert dann zwar, aber kann sie evtl nicht mehr öffnen.
Sorry, aber im Prinzip hatte ich auch Recht..... :))
VBA SaveCopyAs
02.08.2023 01:53:16
Oberschlumpf
Hi,

Ich vermute: "Was genau soll das heissen?" = zuvor gespeicherte xlsX-Datei öffnen, Original-xlsB schließen

Ciao
Thorsten
VBA SaveCopyAs
02.08.2023 02:16:36
onur
Und das Makro springt von der xlsb zur xlsx-Datei und macht von da aus weiter ???
Anzeige
VBA SaveCopyAs
02.08.2023 02:48:38
Oberschlumpf
dann eben nur xlsB schließen (bevor du es vllt tust: frag nich mich, ob der Fragende das mit VBA gut nich selbst + allein hinbekommt, sondern frag ihn direkt)
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

VBA SaveCopyAs richtig nutzen


Schritt-für-Schritt-Anleitung

  1. Kopiere die Originaldatei: Verwende die Methode SaveCopyAs, um eine Kopie der Datei zu erstellen. Beachte, dass hierbei das Dateiformat nicht geändert werden kann.

    ThisWorkbook.SaveCopyAs "Kopie.xlsb"
  2. Öffne die Kopie: Nach dem Erstellen der Kopie musst du sie manuell öffnen oder ein weiteres Makro verwenden, um sie zu aktivieren.

    Workbooks.Open "Kopie.xlsb"
  3. Arbeite in der Kopie: Ändere alle Makros, damit sie sich auf ActiveWorkbook beziehen, sodass du nur in der Kopie arbeitest.

  4. Speichere die Datei im gewünschten Format: Um die Kopie in einem anderen Format wie xlsx zu speichern, verwende SaveAs:

    ActiveWorkbook.SaveAs "Kopie.xlsx", FileFormat:=xlOpenXMLWorkbook

Häufige Fehler und Lösungen

  • Fehler: Datei kann nicht geöffnet werden: Wenn du versuchst, eine xlsb-Datei zu öffnen, die mit einem anderen Format gespeichert wurde, kann dies zu Problemen führen. Stelle sicher, dass du die Datei im richtigen Format speicherst.

  • Makros werden nicht entfernt: Wenn du die Datei als xlsx speicherst, bleiben die Makros in der ursprünglichen xlsb-Datei erhalten. Sie werden erst beim nächsten Öffnen der xlsx-Datei entfernt.


Alternative Methoden

Falls SaveCopyAs nicht deinen Anforderungen entspricht, kannst du die Methode SaveAs verwenden. Mit SaveAs kannst du die Datei unter einem neuen Namen und in unterschiedlichen Formaten speichern:

ThisWorkbook.SaveAs "Kopie neu.xlsx", FileFormat:=xlOpenXMLWorkbook

Diese Methode öffnet die neue Datei und du kannst sofort in dieser weiterarbeiten.


Praktische Beispiele

  1. Kopieren und Umbenennen:

    Sub CopyAndRename()
       ThisWorkbook.SaveCopyAs "C:\Pfad\Kopie.xlsb"
       Workbooks.Open "C:\Pfad\Kopie.xlsb"
       ' Weitere Bearbeitung hier
    End Sub
  2. Speichern als xlsx:

    Sub SaveAsXLSX()
       ActiveWorkbook.SaveAs "C:\Pfad\Kopie.xlsx", FileFormat:=xlOpenXMLWorkbook
    End Sub

Tipps für Profis

  • Schreibschutz aktivieren: Um das Überschreiben der Originaldatei zu verhindern, setze im Dateiexplorer den Schreibschutz für die Originaldatei.

  • Verwendung von ActiveWorkbook: Stelle sicher, dass deine Makros flexibel sind und ActiveWorkbook verwenden, sodass sie immer auf die aktuell geöffnete Datei zugreifen.


FAQ: Häufige Fragen

1. Kann ich SaveCopyAs verwenden, um die Datei im xlsx-Format zu speichern? Nein, SaveCopyAs speichert die Datei immer im gleichen Format wie das Original. Um das Format zu ändern, musst du SaveAs verwenden.

2. Was passiert mit den Makros, wenn ich die Datei als xlsx speichere? Die Makros bleiben in der ursprünglichen xlsb-Datei erhalten und werden erst beim nächsten Öffnen der xlsx-Datei entfernt.

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