Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Kopie speichern

VBA Kopie speichern
07.01.2022 11:24:40
Bruno
Habe ein Problem
Wir haben in der Firma ein Excel Arbeitsplan File, welches sich in einem geschützten Laufwerk befindet. Dieses wird durch 2 Personen (nicht gleichzeitig) bearbeitet. Wird die Datei gespeichert, soll auf einem für alle zugänglichen Netzlaufwerk eine Kopie gespeichert werden. Dies soll zudem auch möglich sein, wenn das File bereits geöffnet ist.
Das Problem daran ist, dass mein Code/Excel zwischendurch hängen bleibt.

Private Sub Workbook_BeforeSave(ByVal SpeichernAngezeigt As Boolean, Abrechen As Boolean)
Dim a As Variant
'Am aktuellen Ort speichern
ActiveWorkbook.Save
'Meldungen Ausschalten
Application.DisplayAlerts = False
'Speichern auf Share mit ReadOnly Empfehlung
ActiveWorkbook.SaveAs Filename:="\\Pfadangabe" + ActiveWorkbook.Name, ReadOnlyRecommended:=True
'Meldungen Einschalten
Application.DisplayAlerts = True
End Sub
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Kopie speichern
07.01.2022 11:51:49
ralf_b
1. das beforesave event wird ausgelöst wenn Excel das Workbook speichern möchte. Somit ist das Aufrufen von ActiveWorkbook.Save unnötig und führt zu einer Rekursion. Weil dann das beforesave event erneut angestossen wird.
2. SaveCopyAs statt saveas
Saveas ändert den Dateinnamen der aktiven Datei. Wenn du eine unabhängige Kopie speichern willst, dann savecopyas
Anzeige
AW: VBA Kopie speichern
07.01.2022 13:01:47
Bruno
Das Problem bei SaveCopyAs ist, dass bei geöffneter Datei auf dem Netzlaufwerk die Kopie nicht gespeichert werden kann. Dies habe ich mit ReadOnlyRecommended:=True abgefangen
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Kopie speichern in Excel


Schritt-für-Schritt-Anleitung

Um eine Excel-Datei als Kopie zu speichern, kannst du das Workbook_BeforeSave-Ereignis in VBA nutzen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne die Excel-Datei, in der du die VBA-Anpassungen vornehmen möchtest.

  2. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  3. Doppelklicke auf "DieseArbeitsmappe" im Projekt-Explorer.

  4. Füge den folgenden Code in das Modul ein:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
       Application.DisplayAlerts = False
       ' Unabhängige Kopie speichern
       ThisWorkbook.SaveCopyAs Filename:="\\Pfadangabe\" & ThisWorkbook.Name
       Application.DisplayAlerts = True
    End Sub
  5. Ersetze \\Pfadangabe\ mit dem tatsächlichen Pfad, wo du die Kopie speichern möchtest.

  6. Schließe den VBA-Editor und teste die Funktion, indem du die Datei speicherst.

Mit diesem Code wird die Excel-Datei als Kopie gespeichert, ohne die Originaldatei zu verändern.


Häufige Fehler und Lösungen

  • Fehler: Excel hängt sich auf

    • Lösung: Vermeide die Verwendung von ActiveWorkbook.Save im BeforeSave-Ereignis, da dies zu einer Rekursion führt. Nutze stattdessen ThisWorkbook.SaveCopyAs.
  • Fehler: Kopie kann nicht gespeichert werden

    • Lösung: Stelle sicher, dass der Pfad korrekt angegeben ist und dass du die nötigen Schreibrechte auf dem Netzlaufwerk hast.

Alternative Methoden

Wenn du die Möglichkeit hast, eine Excel-Kopie ohne VBA zu erstellen, kannst du einfach die Datei manuell über "Speichern unter" speichern. Achte darauf, den Dateinamen zu ändern, um Verwirrung zu vermeiden.

Um eine Excel-Datei als Kopie zu speichern, ohne den Speichern-Dialog zu verwenden, kannst du auch die SaveCopyAs-Methode in anderen Kontexten nutzen:

Sub KopieSpeichern()
    ThisWorkbook.SaveCopyAs "C:\DeinPfad\" & ThisWorkbook.Name
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du die Funktion SaveCopyAs in einer Excel-Anwendung verwenden kannst:

Sub BeispielKopieSpeichern()
    Dim zielPfad As String
    zielPfad = "\\DeinNetzlaufwerk\Kopie_" & Format(Now, "YYYYMMDD_HHMMSS") & "_" & ThisWorkbook.Name
    ThisWorkbook.SaveCopyAs zielPfad
    MsgBox "Kopie gespeichert unter: " & zielPfad
End Sub

In diesem Beispiel wird die Kopie mit einem Zeitstempel im Namen gespeichert, was die Verwaltung erleichtert.


Tipps für Profis

  • Automatisierung: Du kannst eine Automatisierung einrichten, die die Kopie zu festen Zeitpunkten speichert, indem du eine Application.OnTime-Methode verwendest.
  • Fehlerprotokollierung: Füge eine Fehlerbehandlung ein, um Probleme beim Speichern der Kopie zu protokollieren. Dies hilft dir, die Ursachen von Fehlern besser nachzuvollziehen.

FAQ: Häufige Fragen

1. Wie kann ich die Excel-Kopie speichern deaktivieren?
Du kannst den Code anpassen, um die Kopie nur unter bestimmten Bedingungen zu speichern, z.B. nur, wenn eine bestimmte Zelle einen bestimmten Wert hat.

2. Was ist der Unterschied zwischen SaveCopyAs und SaveAs?
SaveCopyAs erstellt eine unabhängige Kopie der Datei, ohne die originale Arbeitsmappe zu ändern. SaveAs hingegen ändert den Namen und die Eigenschaften der aktuellen Datei.

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