Registriert seit: 22.02.2016
Version(en): 2010
Hallo zusammen,
ich möchte ein Exceldokument unter einem "anderen" Namen speichern.
Im originalen Dokument habe ich ein Tabellenblatt "Adressen", das möchte ich nicht weitergeben möchte. Datenschutz und so ;)
Ich könnte das Dokument per Makro mit einem anderen Namen speichern, danach öffnen, Tabellenblatt löschen und wieder speichern.
Gibt es also die Funktion: Speichern unter, ohne Tabelle XY
Vielen Dank schon mal im Voraus ;)
Grüße Klaus
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
Moin Klaus!
Du könntest auch ein Array der zu speichernden Blätter in eine neue Datei kopieren und dann speichern:
Worksheets(Array("Tabelle1", "Tabelle2")).Copy
Musst halt sehen, was aufwändiger ist.
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 22.02.2016
Version(en): 2010
Danke für die schnelle Antwort,
das Ursprungsdokument enthält Makros, die müssen mit in die neue Datei.
Wenn das wichtig sehe, würde ich nach deiner Methode nur die Tabellenblätter kopieren?
lg Klaus
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
Ereignismakros der Tabellenblätter wandern mit.
Allgemeine Makros in Modulen und im Workbook nicht.
Salami?
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
00202
Nicht registrierter Gast
Hallo Klaus,
eine Möglichkeit von Vielen ist die "
Workbook.SaveCopyAs-Methode":

Code:
Option Explicit
Public Sub Main()
On Error GoTo Fin
Const strEX As String = ".xlsb" ' Auf deine Dateiendung ANPASSEN!!!!!
Application.DisplayAlerts = False
With ThisWorkbook
.Worksheets("Adressen").Delete
.SaveCopyAs .Path & Application.PathSeparator & Replace(.Name, strEX, "") & Format(Now, "_DD_MM_YYYY_hh_mm_ss") & strEX
End With
Fin:
Application.DisplayAlerts = True
ThisWorkbook.Close False
End Sub
Die Konstante "
strEX" musst du gegebenenfalls
anpassen. Datei wird als Kopie im gleichen Ordner gespeichert - mit Datum und Uhrzeit hintendran. Originaldatei wird ohne speichern geschlossen.
Registriert seit: 22.02.2016
Version(en): 2010
Das ist eine gute Idee Case,
die Tabelle in der originalen zu löschen, eine Kopie zu erstellen, und die originale ohne zu speichern zu schließen.
Meinst Du, es ist möglich, nach dem Speichern der Kopie, das Löschen wieder rückgängig zu machen, also ohne das Dokument schließen zu müssen?
Ich möchte mehrere Datei Kopien erstellen, mit unterschiedlichen Inhalten (für verschiedene Abteilungen).
Bei jedem Neustart, müsste ich das Makro immer wieder von Vorn starten.
Das hätte ich oben erwähnen sollen, wollte jedoch die Beschreibung einfach halten. Sorry ;)
lg Klaus
00202
Nicht registrierter Gast
Hallo,

dann löschen wir das Tabellenblatt eben in der Kopie:

Code:
Option Explicit
Public Sub Main()
Const strEX As String = ".xlsb" ' Auf deine Dateiendung ANPASSEN!!!!!
Dim wkbBook As Workbook
Dim strTMP As String
On Error GoTo Fin
With Application
.ScreenUpdating = False
.DisplayAlerts = False
.EnableEvents = False
End With
With ThisWorkbook
strTMP = .Path & Application.PathSeparator & Replace(.Name, strEX, "") & Format(Now, "_DD_MM_YYYY_hh_mm_ss") & strEX
.SaveCopyAs strTMP
Set wkbBook = Workbooks.Open(strTMP)
wkbBook.Worksheets("Adressen").Delete
wkbBook.Close True
Set wkbBook = Nothing
End With
Fin:
Set wkbBook = Nothing
With Application
.ScreenUpdating = True
.DisplayAlerts = True
.EnableEvents = True
End With
If Err.Number <> 0 Then MsgBox "Error: " & Err.Number & " " & Err.Description
End Sub
Registriert seit: 22.02.2016
Version(en): 2010
17.04.2021, 22:10
Vielen Dank Case,
konnte es jetzt gerade erst testen.
Das funktioniert richtig gut

und schnell.
Viele Grüße
Klaus