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

Forumthread: Kopie einer Datei erstellen

Kopie einer Datei erstellen
09.07.2014 10:06:38
Dirk
Hallo ins Forum,
habe ein kleines Problem. Ich habe eine .xlsm-Datei mit Paßwortschutz, die beim Schließen automatisch eine Kopie als .xlsx-Datei erstellt. Problem hierbei ist, daß natürlich auch der Code und das Paßwort mitkopiert wird und sich die Datei dann nicht mehr öffnen läßt. Gibt es eine Möglichkeit, den Code so zu ergänzen, daß beim
Kopiervorgang nur in der .xlsx-Datei der Code und das Paßwort automatisch entfernt werden (Paßwort für Lese-& Schreibschutz) ?
Vielen Dank im Voraus
Dirk
Hier noch mein Code :
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim pfad As String
Dim pfad2 As String
pfad = "W:\Omni_KFZ\"
pfad2 = "W:\omni_kfz\sicherungen\"
With ThisWorkbook
.Save
Application.DisplayAlerts = False
.SaveCopyAs pfad & "Fahrzeuge_Neuwagen_Kopie.xlsm"
.SaveCopyAs pfad2 & "Fahrzeuge_Neuwagen_Kopie" & Format(Now, "YYYYMMDD hhmm") & ".xlsm"
Application.DisplayAlerts = True
End With
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Kopie einer Datei erstellen
09.07.2014 10:16:57
Dirk
Sorry, hier noch mal der richtige Code :
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim pfad As String
Dim pfad2 As String
pfad = "W:\Omni_KFZ\"
pfad2 = "W:\omni_kfz\sicherungen\"
With ThisWorkbook
.Save
Application.DisplayAlerts = False
.SaveCopyAs pfad & "Fahrzeuge_Neuwagen_Kopie.xlsx"
.SaveCopyAs pfad2 & "Fahrzeuge_Neuwagen_Kopie" & Format(Now, "YYYYMMDD hhmm") & ".xlsm"
Application.DisplayAlerts = True
End With
End Sub

Anzeige
AW: Kopie einer Datei erstellen
09.07.2014 10:18:56
Marc
Hallo,
ich habe gerade ein sehr ähnliches Problem!
Da mein VBA nicht das beste ist: Kann ich deinen Code auch so anpassen, dass lediglich ein einzelnes Blatt in eine neue Datei kopiert wird?
Viele Grüße

AW: Kopie einer Datei erstellen
09.07.2014 10:27:20
Dirk
Hallo Marc,
das Blatt heißt NWTabelle_aktuell !
Danke schon mal.
Dirk

Anzeige
AW: Kopie einer Datei erstellen
09.07.2014 10:54:36
Nepumuk
Hallo,
mit der SaveCopyAs-Methode erstellst du eine 1:1 - Kopie der Datei. Dabei ist es nicht möglich das Dateiformat von xlsm nach xlsx zu konvertieren. Du musst die ganz normalen SaveAs-Methode benutzen und da kannst du ja das Kennwort entfernen.
Wenn du das Dateiformat nicht änderst, kannst du mit:

ThisWorkbook.Password = vbNullString
das Kennwort entfernen.
Gruß
Nepumuk

Anzeige
AW: Kopie einer Datei erstellen
09.07.2014 15:31:56
Dirk
Hallo Nepomuk,
danke für Deinen Tip. Wenn ich den Eintrag von "SaveCopyAs" in "SaveAs" ändere erhalte ich beim Ausführen den Laufzeitfehler 1004 !
Gruß Dirk

AW: Kopie einer Datei erstellen
09.07.2014 15:48:19
Nepumuk
Hallo,
soll ich nun raten wie dein Code aussieht?
Ich hab das so vereinfacht getestet und es klappt einwandfrei:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Save
Application.DisplayAlerts = False
Call SaveAs(Filename:="D:\Test1.xlsm")
Call SaveAs(Filename:="D:\Test2.xlsx", FileFormat:=xlOpenXMLWorkbook, Password:= _
vbNullString)
Application.DisplayAlerts = True
End Sub

Gruß
Nepumuk

Anzeige
AW: Kopie einer Datei erstellen
09.07.2014 16:27:24
Dirk
Hallo Nepomuk,
sorry, ich Rindvieh habe die Klammern vergessen.
Klappt jetzt prima. Tausend Dank !!!
Gruß Dirk
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Kopie einer Excel-Datei erstellen


Schritt-für-Schritt-Anleitung

Um eine Kopie einer Excel-Datei zu erstellen, insbesondere wenn du eine .xlsm-Datei mit Passwortschutz hast, kannst du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass beim Schließen der Datei eine Kopie als .xlsx-Datei ohne Code und Passwort erstellt wird:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim pfad As String
    pfad = "W:\Omni_KFZ\"

    ' Passwort entfernen
    ThisWorkbook.Password = vbNullString

    Application.DisplayAlerts = False
    ' Excel-Datei kopieren
    ThisWorkbook.SaveCopyAs pfad & "Fahrzeuge_Neuwagen_Kopie.xlsx"
    Application.DisplayAlerts = True
End Sub

In dieser Anleitung wird das Passwort entfernt, bevor die Kopie der Excel-Datei erstellt wird. Dadurch kannst du sicherstellen, dass die .xlsx-Datei problemlos geöffnet werden kann.


Häufige Fehler und Lösungen

  1. Laufzeitfehler 1004:

    • Dieser Fehler kann auftreten, wenn der Pfad nicht korrekt ist oder die Datei nicht gespeichert werden kann. Überprüfe, ob der angegebene Pfad existiert und ob du die notwendigen Berechtigungen hast.
  2. Kopieren eines einzelnen Blatts:

    • Wenn du nur ein einzelnes Blatt in eine neue Datei kopieren möchtest, kannst du den folgenden Code verwenden:
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       Dim wb As Workbook
       Set wb = Workbooks.Add
       ThisWorkbook.Sheets("NWTabelle_aktuell").Copy Before:=wb.Sheets(1)
       wb.SaveAs Filename:="D:\Test_Sheet.xlsx", FileFormat:=xlOpenXMLWorkbook
       wb.Close
    End Sub

Alternative Methoden

Eine Alternative zur SaveCopyAs-Methode ist die Verwendung der SaveAs-Methode. Diese Methode ermöglicht es dir, das Passwort zu entfernen und die Datei in einem anderen Format zu speichern. Hier ein Beispiel:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.DisplayAlerts = False
    ' Speichern unter einem neuen Dateinamen ohne Passwort
    ThisWorkbook.SaveAs Filename:="D:\Neuer_Dateiname.xlsx", FileFormat:=xlOpenXMLWorkbook, Password:=vbNullString
    Application.DisplayAlerts = True
End Sub

Mit dieser Methode kannst du eine Excel-Datei ohne Passwortschutz und in einem anderen Format speichern.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du eine Kopie einer Excel-Datei erstellen kannst:

  1. Kopie mit Passwort entfernen:

    • Verwende den oben genannten Code, um eine Kopie einer .xlsm-Datei zu erstellen, während das Passwort entfernt wird.
  2. Einzelnes Blatt kopieren:

    • Nutze den Code, um nur ein spezifisches Blatt in eine neue Excel-Datei zu kopieren, was besonders hilfreich ist, wenn du nur bestimmte Daten archivieren möchtest.

Tipps für Profis

  • Automatisierung: Du kannst die Kopierfunktion in bestimmte Zeitintervalle automatisieren, indem du die OnTime-Methode verwendest, um regelmäßig eine Kopie deiner Excel-Datei zu erstellen.

  • Versionskontrolle: Achte darauf, dass du bei der Erstellung von Kopien klare Namenskonventionen verwendest, um Verwirrung zu vermeiden. Zum Beispiel: Fahrzeuge_Neuwagen_Kopie_YYYYMMDD.xlsx.


FAQ: Häufige Fragen

1. Wie erstelle ich eine Kopie einer Excel-Datei ohne VBA? Du kannst eine Kopie einfach durch "Datei" -> "Speichern unter" und dann einen neuen Dateinamen auswählen.

2. Kann ich die Kopie automatisch in einem bestimmten Ordner speichern? Ja, indem du den vollständigen Pfad im SaveAs-Befehl angibst, z.B. SaveAs "C:\Ordner\Kopie.xlsx".

3. Welche Excel-Versionen unterstützen diese Methoden? Die genannten Methoden sind für Excel 2010 und neuere Versionen geeignet.

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