Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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
Antworten 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)
Antworten 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
Antworten 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)
Antworten 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.
________
Servus
Case
Antworten 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
Antworten 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
________
Servus
Case
Antworten Top
#8
Thumbs Up 
Vielen Dank Case,

konnte es jetzt gerade erst testen.

Das funktioniert richtig gut  15 und schnell.

Viele Grüße
Klaus
Antworten Top


Gehe zu:


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