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

Dateien per Makro archivieren

Forumthread: Dateien per Makro archivieren

Dateien per Makro archivieren
20.10.2015 15:10:32
Thomas
Hallo VBA-Gemeinde,
ich stosse grad mit meinen bescheidenen VBA-Kenntnissen an meine Grenzen. Ich habe folgendes vor.
Es gibt eine Dateivorlage "Blanco.xlsm".
Diese wird unter neuen Dateinamen abgespeichert (z.B. West.xlsm, Sued.xlsm, Nord.xlsm, Mitte.xlsm) und mit Daten gefüllt. Am Ende eines Kalenderjahres soll diese Datei archiviert werden. Hierbei soll der bisherige Dateiname (z.B. West.xlsm) mit einem Unterstrich und der Jahreszahl ergänzt werden (West_2015.xlsm) und in dem Ordner "Archiv" abgelegt werden, welcher sich in demselben Verzeichnis wie die zu archivierenden Dateien befindet. Die Jahreszahl wird aus der Zelle C1 geholt. Dort liegt sie im Format TT.MM.JJJJ vor.
Anschließend sollen die eingegebenen Daten aus der Originaldatei (West.xlsm) entfernt werden. Zum entfernen der Daten habe ich schon ein Makro.
Jetzt meine Frage. Ist es möglich das Makro in der Vorlage (Blanco.xlsm) dahingehend zu ergänzen, dass vor dem entfernen der Daten eine wie vor beschriebene Archivdatei erstellt wird?
Abfrage Datei archiviert = ja - Überschreiben der Archivdatei (ohne Nachfrage)
Abfrage Datei archiviert = nein - Erzeugen der Archivdatei (ohne Nachfrage)
Besten Dank für eure Hilfe,
Thomas
Hier noch mein Makro zum entfernen der Daten.
Sub Tabelle_leeren()
If MsgBox("Ist diese Datei archiviert?", vbQuestion + vbYesNo, _
"Datei archiviert?") = vbYes Then
If MsgBox("Das Löschen der Daten kann nicht wiederrufen werden." _
& Chr(10) & "Wirklich löschen?", vbQuestion + vbYesNo, _
"Löschen bestätigen") = vbYes Then
Application.ScreenUpdating = False
Range("B4:D63,F4:N63,Q4:S63,V4:Z63,C1,F1:H1,K1:M1").Select
Selection.ClearContents
Range("AA4:AA63").Select
ActiveWorkbook.Worksheets("Auflistung").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Auflistung").Sort.SortFields.Add Key:=Range _
("AA4:AA63"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Auflistung").Sort
.SetRange Range("AA4:AA63")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Application.ScreenUpdating = True
End If
End If
Range("B65536").End(xlUp).Offset(1, 0).Select
End Sub
Userbild

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateien per Makro archivieren
20.10.2015 15:18:36
Rudi
Hallo,
Abfrage Datei archiviert = ja - Überschreiben der Archivdatei (ohne Nachfrage)
Das würde ich nicht tun.
Wenn ein 2. Mal auf 'Leeren' geklickt wird, wird die leere Tabelle archiviert.
Gruß
Rudi

AW: Dateien per Makro archivieren
20.10.2015 21:33:57
Thomas
Hallo Rudi,
danke für den Tipp. Vielleicht ist es auch besser zwei Makros zu schreiben. Eines zum leeren der Tabelle mit abfrage und Prüfung ob bereits eine Archivdatei vorhanden ist und eines zum archivieren.
Aber wie gesagt, das übersteigt meine VBA Kenntnisse.
Gruß, Thomas

Anzeige
AW: Dateien per Makro archivieren
21.10.2015 09:09:38
Thomas
Hallo zusammen.
Habe es nun mit zwei Makros realisiert und auch hinbekommen.
Gruß,
Thomas
;
Anzeige
Anzeige

Infobox / Tutorial

Dateien per Makro archivieren in Excel


Schritt-für-Schritt-Anleitung

Um Dateien in Excel per Makro zu archivieren, kannst Du die folgenden Schritte befolgen:

  1. Öffne Deine Excel-Datei und gehe zu „Entwicklertools“. Aktiviere die Entwicklertools, falls sie nicht sichtbar sind.

  2. Erstelle ein neues Makro:

    • Klicke auf „Visual Basic“ und dann im VBA-Editor auf „Einfügen“ > „Modul“.
  3. Füge den folgenden Code ein, um die Archivierungsfunktion zu implementieren:

    Sub Archivieren()
       Dim dateiname As String
       Dim jahr As String
       Dim archivDatei As String
    
       ' Hole den Dateinamen und das Jahr
       dateiname = ThisWorkbook.Name
       jahr = Format(Range("C1").Value, "yyyy")
    
       ' Setze den Archivdateinamen
       archivDatei = "Archiv\" & Left(dateiname, InStrRev(dateiname, ".") - 1) & "_" & jahr & ".xlsm"
    
       ' Überprüfen, ob die Archivdatei schon existiert
       If Dir(archivDatei) <> "" Then
           If MsgBox("Die Archivdatei existiert bereits. Möchtest Du sie überschreiben?", vbYesNo) = vbNo Then
               Exit Sub
           End If
       End If
    
       ' Speichere die Datei im Archiv
       ThisWorkbook.SaveCopyAs archivDatei
    
       ' Leere die Tabelle
       Call Tabelle_leeren
    End Sub
  4. Speichere und schließe den VBA-Editor.

  5. Führe das Makro aus, um die Datei zu archivieren.


Häufige Fehler und Lösungen

  • Fehler: Das Archivverzeichnis existiert nicht.

    • Lösung: Stelle sicher, dass der Ordner „Archiv“ im gleichen Verzeichnis wie Deine Excel-Datei vorhanden ist. Erstelle ihn gegebenenfalls.
  • Fehler: Die Zelle C1 enthält kein gültiges Datum.

    • Lösung: Überprüfe, ob in Zelle C1 ein Datum im Format TT.MM.JJJJ steht. Ändere das Format gegebenenfalls.
  • Fehler: Makro läuft nicht.

    • Lösung: Stelle sicher, dass Du Makros in Excel aktiviert hast. Gehe zu „Datei“ > „Optionen“ > „Sicherheitscenter“ > „Einstellungen für das Sicherheitscenter“ und aktiviere Makros.

Alternative Methoden

Wenn Du keine VBA-Makros verwenden möchtest, kannst Du auch die folgenden Methoden ausprobieren:

  • Manuelles Speichern: Speichere die Datei mit dem gewünschten Namen und der Jahreszahl manuell. Achte darauf, die Originaldatei im gewünschten Format zu benennen.
  • Power Query: Nutze Power Query, um Daten zu archivieren, wenn Du regelmäßig Daten aus mehreren Excel-Dateien zusammenführen und speichern möchtest.

Praktische Beispiele

Hier sind einige praktische Beispiele, wie das Archivieren von Dateien in Excel funktioniert:

  • Beispiel 1: Du arbeitest an einer Datei namens „Verkauf.xlsx“. Am Ende des Jahres möchtest Du diese Datei archivieren. Stelle sicher, dass die Zelle C1 das Datum 31.12.2023 enthält. Nach dem Ausführen des Makros wird die Datei als „Verkauf_2023.xlsm“ im Archivordner gespeichert.

  • Beispiel 2: Wenn Du eine Vorlage „Projektplan.xlsm“ hast, die regelmäßig aktualisiert wird, kannst Du die Archivierungsroutine nutzen, um sicherzustellen, dass alle Versionen der Datei ordentlich gespeichert werden.


Tipps für Profis

  • Automatisierung: Du kannst das Archivieren automatisieren, indem Du den Archivierungsprozess mit einem bestimmten Ereignis verknüpfst, wie z.B. dem Schließen der Datei.
  • Versionierung: Implementiere eine Versionierung, indem Du den Zeitstempel in den Dateinamen einfügst, z.B. „Projektplan_2023_12_31.xlsm“.
  • Backup: Stelle sicher, dass Du regelmäßige Backups Deiner Archivdateien machst, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um andere Dateiformate zu archivieren?
Du kannst den Dateinamen und die Dateiendung im Code entsprechend ändern. Ersetze .xlsm durch das gewünschte Format, z.B. .xlsx.

2. Kann ich das Makro auch auf anderen Excel-Versionen verwenden?
Ja, das Makro sollte in den meisten modernen Excel-Versionen (ab Excel 2010) funktionieren, solange die VBA-Umgebung verfügbar ist.

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