Clever-Excel-Forum

Normale Version: Dokument speichern unter - ohne Tabellenblatt xy
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
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
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
Ereignismakros der Tabellenblätter wandern mit.
Allgemeine Makros in Modulen und im Workbook nicht.
Salami?
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.
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
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
Vielen Dank Case,

konnte es jetzt gerade erst testen.

Das funktioniert richtig gut  15 und schnell.

Viele Grüße
Klaus