Dokument speichern unter - ohne Tabellenblatt xy
#1
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
Top
#2
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)
Top
#3
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
Top
#4
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)
Top
#5
Hallo Klaus, 19

eine Möglichkeit von Vielen ist die "Workbook.SaveCopyAs-Methode": 21

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.
Top
#6
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
Top
#7
Hallo, 19

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

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
Top
#8
Thumbs Up 
Vielen Dank Case,

konnte es jetzt gerade erst testen.

Das funktioniert richtig gut  15 und schnell.

Viele Grüße
Klaus
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste