Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

beim schließen automatisch kopie anfertigen

Forumthread: beim schließen automatisch kopie anfertigen

beim schließen automatisch kopie anfertigen
21.12.2003 22:16:04
devilsblood
Hi Leute
Hab ein Problem für euch zu lösen! Suche eine Möglichkeit bzw ein Makro, das excel dazu veranlasst, beim schließen der Tabelle automatisch eine kopie dieser anzufertigen. In dieser Kopie sollten sowohl die werte als auch die kommentare, aber keine Makros enthalten sein. Bestenfalls sollte diese Kopie dann auch noch den namen haben, der in der Tabelle an der Stelle "B2" steht.

Im Voraus schon einmal Danke für eure Bemühungen
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: beim schließen automatisch kopie anfertigen
21.12.2003 22:38:32
Franz W.
Hallo ??? (bitte Realnamen angeben)


Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
ActiveWorkbook.SaveAs Worksheets("Tabelle1").[b2] & ".xls"
ActiveWorkbook.Close
End Sub


Grüße
Franz
Einspruch (noch OFFEN)
21.12.2003 22:41:58
PeterW
Hallo Franz,

und diese Zeilen speichert eine Kopie der Datei ohne die enthaltenen Makros? :-)

Gruß
Peter
Anzeige
Böses Faul, sorry!! (NOCH OFFEN)
21.12.2003 23:08:44
Franz W.
Hallo Peter,

hast recht, da hab ich zu schludrig drüber gelesen, danke für den Tritt

Grüße
Franz
AW: beim schließen automatisch kopie anfertigen
21.12.2003 23:03:33
Hans-Peter (devilsblood)
Hi Franz...
Danke für die schnelle Hilfe. Im Prinzip schon richtig, allerdings enthält die Kopie jetzt dummerweise das selbe Makro wie in der Ursprungsdatei. Es entsteht also eine Schleife, wenn ich die Kopie öffne und wieder schließe, weil dann die kopie sich selbst überschreiben möchte. Gibt es eine Möglichkeit, dass die kopie kein Makro enthält?

Grüße
Hans-Peter
Anzeige
AW: beim schließen automatisch kopie anfertigen
21.12.2003 23:11:24
Nepumuk
Hallo Hans-Peter,
das geht so:

Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets(1).Copy
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Worksheets(1).Name).CodeModule
.DeleteLines 1, .CountOfLines
End With
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(1).Cells(2, 2) & ".xls"
ActiveWorkbook.Close
End Sub



Code eingefügt mit: Excel Code Jeanie

Beim öffnen der Kopie kommt aber noch die Makroabfrage, auch wenn keine mehr drin sind. Da hat Excel ein langes Gedächtnis. Ein nochmaliges speichern der Mappe schafft hier abhilfe.
Gruß
Nepumuk
Anzeige
AW: beim schließen automatisch kopie anfertigen
22.12.2003 00:17:45
Hans-Peter
Hallo Nepumuk...
Vielen Dank für die klasse Hilfe! Funktioniert einwandfrei =) Hab noch ein kleines Problem, was ich ohne Eure Hilfe glaub ich nicht lösen kann. Meine Originaldatei hat einen Passwort-geschützten Blattschutz. Dieser schützt einen Teil der Zellen, die Formeln enthalten. Die Kopie soll einen kompletten Blattschutz erhalten, der aber ein anderes Passwort als die Originaldatei erhalten soll. Hintergrund: die Kopie soll eine Sendedatei sein, die alle daten des Originals enthalten soll; die kopie soll beim schließen des Originals automatisch erstellt werden, komplett passwortgeschützt sein ( was man ja im makro festlegen kann oder?!) und wenn möglich keine makros enthalten. Gibt´s da ne Möglichkeit?

Liebe Grüße
Hans-Peter
Anzeige
AW: beim schließen automatisch kopie anfertigen
22.12.2003 19:33:10
Nepumuk
Hallo Hans-Peter,
dann so:

Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Worksheets(1).Copy
With ActiveSheet
.Unprotect Password:="altesKennwort"
.Cells.Locked = True
.Protect Password:="neuesKennwotr"
End With
With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Worksheets(1).Name).CodeModule
.DeleteLines 1, .CountOfLines
End With
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(1).Cells(2, 2) & ".xls"
ActiveWorkbook.Close
End Sub



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige
AW: beim schließen automatisch kopie anfertigen
21.12.2003 23:53:31
K.Rola
Hallo,

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim vbc As Object, wks As Worksheet, strName As String
strName = Sheets("Tabelle1").[a1].Text & ".xls"
ActiveWorkbook.Save
ActiveWorkbook.SaveAs strName
With ActiveWorkbook.VBProject
For Each vbc In .VBComponents
Select Case vbc.Type
Case 1, 2, 3
.VBComponents.Remove vbc
Case 100
vbc.CodeModule.DeleteLines 1, vbc.CodeModule.CountOfLines
End Select
Next
End With
ActiveWorkbook.Save
End Sub


Gruß K.Rola
Anzeige
AW: beim schließen automatisch kopie anfertigen
22.12.2003 00:19:53
Hans-Peter
Hallo K.Rola
Vielen Dank für die klasse Hilfe! Funktioniert einwandfrei =) Hab noch ein kleines Problem, was ich ohne Eure Hilfe glaub ich nicht lösen kann. Meine Originaldatei hat einen Passwort-geschützten Blattschutz. Dieser schützt einen Teil der Zellen, die Formeln enthalten. Die Kopie soll einen kompletten Blattschutz erhalten, der aber ein anderes Passwort als die Originaldatei erhalten soll. Hintergrund: die Kopie soll eine Sendedatei sein, die alle daten des Originals enthalten soll; die kopie soll beim schließen des Originals automatisch erstellt werden, komplett passwortgeschützt sein ( was man ja im makro festlegen kann oder?!) und wenn möglich keine makros enthalten. Gibt´s da ne Möglichkeit?

Liebe Grüße
Hans-Peter
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel beim Schließen automatisch speichern: So erstellst du eine Kopie


Schritt-für-Schritt-Anleitung

Um Excel beim Schließen automatisch eine Kopie der Arbeitsmappe zu erstellen, die keine Makros enthält, kannst du folgendes VBA-Makro verwenden:

  1. Öffne die Excel-Datei, für die du das Makro erstellen möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.
  4. Füge den folgenden Code in das Modul ein:
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Worksheets(1).Copy
    With ActiveWorkbook.VBProject.VBComponents(ActiveWorkbook.Worksheets(1).Name).CodeModule
        .DeleteLines 1, .CountOfLines
    End With
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(1).Cells(2, 2) & ".xls"
    ActiveWorkbook.Close
End Sub
  1. Speichere die Arbeitsmappe als Excel-Makro-fähige Arbeitsmappe (*.xlsm).
  2. Schließe den VBA-Editor und teste das Makro, indem du die Datei schließt.

Häufige Fehler und Lösungen

  • Problem: Die Kopie enthält weiterhin das originale Makro.

    • Lösung: Stelle sicher, dass der Code, der die Makros entfernt, korrekt ist. Der Code oben löscht alle Zeilen im Code-Modul des Arbeitsblatts.
  • Problem: Excel zeigt eine Makro-Abfrage beim Öffnen der Kopie an.

    • Lösung: Speichere die Kopie erneut nach dem Erstellen. Dies entfernt die Makro-Abfrage.

Alternative Methoden

Wenn du Excel beim Schließen automatisch speichern möchtest, könntest du auch überlegen, die Datei in einem anderen Format zu speichern, das keine Makros unterstützt, wie .xlsx. Hier ist ein Beispiel:

ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & ThisWorkbook.Worksheets(1).Cells(2, 2) & ".xlsx"

Praktische Beispiele

Angenommen, du hast in Zelle B2 den Namen "Bericht" stehen. Mit dem oben genannten Makro wird beim Schließen der Datei eine Kopie mit dem Namen "Bericht.xls" im gleichen Verzeichnis erstellt.

Wenn du zusätzlich einen Passwortschutz für die Kopie einfügen möchtest, kannst du diesen Code verwenden:

With ActiveSheet
    .Protect Password:="deinPasswort"
End With

Füge diesen Code nach dem Speichern der Kopie ein, um die Kopie mit einem Passwort zu schützen.


Tipps für Profis

  • Achte darauf, dass die Makros in der Originaldatei korrekt funktionieren, bevor du die Kopie erstellst.
  • Teste das Makro in einer sicheren Umgebung, bevor du es auf wichtigen Dateien anwendest.
  • Nutze die Workbook_BeforeClose-Ereignisprozedur, um sicherzustellen, dass die Kopie bei jedem Schließen der Datei erstellt wird.

FAQ: Häufige Fragen

1. Wie kann ich die Kopie in einem anderen Format speichern? Du kannst den Dateityp im SaveAs-Befehl ändern, indem du .xlsx anstelle von .xls verwendest.

2. Kann ich die Kopie mit einem anderen Passwort schützen? Ja, du kannst den Schutz mit einem anderen Passwort im gleichen Makro definieren, indem du die Protect-Methode verwendest.

3. Was passiert, wenn ich das Makro nicht speichere? Wenn du das Makro nicht speicherst, wird die Funktionalität zur automatischen Kopie beim Schließen nicht verfügbar sein. Stelle sicher, dass du die Datei als .xlsm speicherst.

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