`` `vba
Sub weellyincomemanagement ()
'Variablen deklarieren
Dim WB als Arbeitsmappe
Dim WS als Arbeitsblatt
Dim Filepath als Zeichenfolge
Dim Filename als Zeichenfolge
Dimer Neufilmame als Zeichenfolge
Dim WeekStartDate als Datum
Dimes WeekendDate als Datum
'Legen Sie das Startdatum der Woche fest (Sie können diese basierend auf Ihrer Woche am Starttag anpassen, z. B. Sonntag oder Montag).
WeekStartDate =Datum - Wochentag (Datum, vbmonday) + 1 'Dies setzt den Starttag bis Montag
'Setzen Sie das wöchentliche Enddatum
WeekendDate =WeekStartDate + 6
Setzen Sie den Pfad zum Ordner, in dem Sie die Dateien speichern möchten. Ändern Sie dies in Ihren gewünschten Ordner
Filepath ="c:\ path \ bis \ Ihr \ EinkommensFolder \" '<--- Wichtig: Ändern Sie dies!
»Überprüfen Sie, ob der Ordner existiert, und erstellen Sie ihn, wenn nicht
Wenn Dir (Filepath, vbDirectory) ="" dann
Mkdir Filepath
Ende wenn
'Setzen Sie den Basis -Dateinamen (z. B. "Einkommen")
Dateiname ="Einkommen"
'Setzen Sie den neuen Dateinamen (z. B. "Einkommen_2023-10-23_to_2023-10-29.xlsx")
NewFileName =Dateiname &"_" &Format (WeekStartDate, "yyyy-mm-dd") &"_to_" &Format (WeekendDate, "Yyyy-Mm-Dd") &".xlsx"
'Erstellen Sie einen vollständigen Dateipfad
Filepath =filepath &newfilename
' ***
„Speichern Sie die aktuelle Arbeitsmappe mit dem wöchentlichen Dateinamen
' ***
'Erhalten Sie einen Hinweis auf das aktuelle Arbeitsbuch
Setzen Sie WB =ThisWorkbook
'Deaktivieren Sie die Bildschirmaktualisierung, um den Prozess zu beschleunigen
Application.screenupdating =false
'Speichern Sie die Arbeitsmappe
WB.Saveas Filepath, FileFormat:=xlopenxMlworkbook 'Verwenden
' ***
'Erstellen Sie eine neue Arbeitsmappe (basierend auf aktueller oder einer Vorlage)
' ***
'Option 1:Erstellen Sie eine neue leere Arbeitsmappe
'Workbooks.Add
'Option 2:Erstellen Sie ein neues Arbeitsbuch basierend auf der Struktur des vorhandenen Arbeitsbuchs (kopieren Sie es)
Setzen Sie WB =Workbooks.add (thisworkbook.fullname) 'thisworkbook.fullname verwendet die aktuelle Arbeitsmappe als Vorlage als Vorlage
'Option 3:Erstellen Sie aus einer bestimmten Vorlagendatei (wenn Sie eine Vorlagen -Setup haben)
'Dim TemplateFilepath als Zeichenfolge
'TemplateFilepath ="C:\ path \ to \ your \ template \ Incometemplate.xltx"' Ändern Sie dies in Ihrem Vorlagenpfad
'Setze wb =workbooks.add (Vorlage:=templateFilepath)
'Optional:Benennen Sie das erste Blatt in der neuen Arbeitsmappe in etwas Sinnvolles um
Setzen Sie WS =WB.Sheets (1)
Ws.name ="Weekly Income Data"
'Aktualisierung der Bildschirme aktivieren
Application.screenupdating =true
'Zeigen Sie ein Meldungsfeld an, das die Aktion bestätigt
MSGBOX "Aktuelle Einkommensarbeitsbuch gespeichert als:" &Newfilename &VBCRLF &_
"Für die nächste Woche wurde ein neues Arbeitsbuch erstellt.", VBInformation, "Weekly Income Update".
'Objektvariablen aufräumen (Best Practice)
Setzen Sie wb =nichts
Setzen Sie WS =nichts
Ende sub
`` `
Erläuterung und wie man verwendet:
1. Öffnen Sie den VBA -Editor:
- Drücken Sie in Excel "Alt + F11", um den Visual Basic Editor (VBE) zu öffnen.
2. Ein Modul einfügen:
- Gehen Sie in der VBE zu `Insert> modul`. Dadurch wird ein neues Modul erstellt, in dem Sie den Code einfügen.
3. Fügen Sie den Code ein:
- Fügen Sie den oben angegebenen Code in das Modul ein.
4. den Code anpassen (wichtig!):
* `filepath =" c:\ path \ to \ Your \ IncomeFolder \ "` : kritisch:Ändern Sie dies in den tatsächlichen Ordnerpfad, in dem Sie Ihre Einkommensarbeitsmeldungen sparen möchten. Stellen Sie sicher, dass der Ordner existiert, oder der Code versucht, ihn zu erstellen. Der nachfolgende Backslash (`\`) ist wichtig. Beispiel:`" D:\ MyComes \ "`
* `WeekStartDate =Datum - Wochentag (Datum, vbmonday) + 1`: Diese Linie berechnet den Beginn der Woche, vorausgesetzt, Ihre Woche beginnt am Montag. Wenn Ihre Woche am Sonntag beginnt, ändern Sie sie in:`weekStartDate =Datum - Wochentag (Datum, VBSundday) + 1` Wenn Ihre Woche an einem anderen Tag beginnt, stellen Sie sich entsprechend an (z. B.` vBtuesday` für Dienstag). Es funktioniert, indem es den Tag der Woche von * Today * gefunden und so viele Tage subtrahiert, sodass der Beginn der Woche immer konsistent ist.
* `Dateiname =" Einkommen "` :Dies legt den Grundnamen Ihrer Datei fest. Sie können dies ändern, wenn Sie einen anderen Basisnamen verwenden möchten, z.
* Wählen Sie * eins * der Erstellungsoptionen der Arbeitsmappe: Der Code bietet drei Optionen zum Erstellen der neuen Arbeitsmappe. Überzeugen Sie die, die Sie verwenden möchten, indem Sie das "" zu Beginn der Linie entfernen:
* `'Workbooks.add` :Erstellt ein völlig leeres Arbeitsbuch.
* `set wb =workbooks.add (thisworkbook.fullname)` :Erstellt ein neues Arbeitsbuch, das ein * Kopie * des aktuellen Arbeitsbuchs ist. Dies ist wahrscheinlich die beste Option, wenn Sie von Woche zu Woche Header, Formeln oder Formatierung beibehalten möchten.
* `'templateFilepath =" c:\ path \ to \ your \ template \ Incometemplate.xltx "` und `'set wb =workbooks.add (Vorlage:=templateFilepath)` :Erstellt ein neues Arbeitsbuch basierend auf einer Vorlagendatei. Sie müssen eine Vorlagendatei (`.xltx`) mit Ihrer gewünschten Formatierung und Layout erstellen und dann die Variable" TemplateFilePath "auf den richtigen Pfad einstellen. Wichtig: Überzeugung * beide * dieser Zeilen, wenn Sie die Vorlageoption verwenden möchten. Vergessen Sie nicht, `" c:\ path \ in \ your \ template \ Incometemplate.xltx "`!
5. Makro ausführen:
- Kehren Sie zum Excel -Arbeitsblatt zurück.
- Drücken Sie `Alt + F8`, um das Dialogfeld" Makro "zu öffnen.
- Wählen Sie aus der Liste der Makros `weexyComemanagement`.
- Klicken Sie auf "Ausführen".
wie es funktioniert:
* speichert das aktuelle Arbeitsbuch:
* `Filepath =filepath &newFileName` konstruiert den vollständigen Pfad und den Dateinamen für die gespeicherte Arbeitsmappe.
* `wb.saveas filepath, FileFormat:=xlopenxMlworkbook` speichert die aktuelle Arbeitsmappe im angegebenen Ordner mit dem generierten Namen mit dem Format" .xlsx ". Dies ist entscheidend für die Kompatibilität und um sicherzustellen, dass Sie das moderne Excel -Dateiformat verwenden.
* Erstellt ein neues Arbeitsbuch:
* Die Erklärung von `Workbooks.Add` (oder Vorlagenbasis) erstellt eine brandneue, leere Arbeitsmappe. Oder, wie bereits erwähnt, die aktuelle als Vorlage verwendet.
* Dateibenennungskonvention:
* `NewFileName =Dateiname &" _ "&Format (WeekStartDate," yyyy-mm-dd ") &" _to_ "&format (WeekendDate," yyyy-mm-dd ") &" .xlsx "` generiert eine Filename, die den Start und Ende der Woche zum Ende des Starts und Ende des Endes enthält. Dies erleichtert es einfach, die Daten für jede Woche zu identifizieren. Die "Format" -Funktion stellt sicher, dass sich die Daten in einem konsistenten, sortierbaren Format (YYYY-MM-DD) befinden.
* Fehlerbehebung und Ordnererstellung (verbessert):
* `Wenn Dir (Filepath, vbDirectory) =" "Dann prüft mkdir filepath`, ob der Zielordner existiert. Wenn dies nicht der Fall ist, erzeugt es den Ordner. Dies verhindert Fehler, wenn der Ordner noch nicht vorhanden ist.
* Bildschirmaktualisierung:
* `Application.screenUpdating =false` und` application.screenupdating =true` deaktivieren und neu angelegte Bildschirmaktualisierung. Dadurch wird das Makro schneller laufen und verhindert das Flackern.
* Objektvariable Reinigung:
* `Set Wb =nichts und` set WS =nichts 'sind gute Praktiken. Sie geben den Speicher frei, das von den Objektvariablen `wb` und` ws` verwendet wird, nachdem sie nicht mehr benötigt werden. Dies verhindert Speicherlecks, insbesondere bei länger laufenden Makros.
Wichtige Überlegungen:
* Backup: Sichern Sie Ihre Arbeitsmappen immer, bevor Sie Makros ausführen, die sie ändern oder speichern.
* Makrosicherheit: Excel hat Makrosicherheitseinstellungen. Möglicherweise müssen Sie sie anpassen, damit Makros ausgeführt werden können. Gehen Sie zu `Datei> Optionen> Trust Center> Trust Center -Einstellungen> Makroeinstellungen" und wählen Sie "Alle Makros aktivieren" (nicht für die allgemeine Verwendung empfohlen; Verwendung mit Vorsicht verwenden) oder "Alle Makros mit Benachrichtigung deaktivieren" (empfohlen, aber Sie müssen Makros jedes Mal aktivieren, wenn Sie das Arbeitsbuch öffnen). Ein besserer Ansatz ist die Verwendung eines digital signierten Makros.
* Tests: Testen Sie das Makro gründlich mit einer Beispiel -Arbeitsmappe, bevor Sie es mit Ihren realen Daten verwenden.
* Platzierung des Makros: Das Makro muss in einer Arbeitsmappe gespeichert werden, in der Makros aktiviert sind (entweder `.xlsm` oder das ältere" .xls "-Format, wenn Sie ältere Excel -Versionen haben). Idealerweise speichern Sie das Makro in Ihrem persönlichen Makroarbeitsbuch, damit es allen Excel -Arbeitsmappen zur Verfügung steht. Um das zu tun:
1. In der VBE sehen Sie sich an.> Project Explorer.
2. Wenn Sie "Personal.xlsb" (oder ähnlich) im Projekt Explorer sehen, wurde bereits das Personal -Makro -Arbeitsbuch erstellt. Wenn nicht, zeichnen Sie ein Dummy -Makro auf (Entwickler -Registerkarte> Makro aufzeichnen und in der Arbeitsmappe für persönliche Makros), um es zu erstellen.
3. Ziehen Sie das Modul mit dem Code aus der aktuellen Arbeitsmappe in "Personal.xlsb" im Projekt Explorer.
4. Speichern Sie das Personal Makro -Arbeitsbuch.
Auslösen des Makros (Automatisierung):
Sie können das Ausführen des Makros auf verschiedene Weise automatisieren:
* Schaltfläche im Arbeitsblatt: Fügen Sie eine Schaltfläche ein (Registerkarte Entwickler> Einfügen> Schaltfläche). Weisen Sie das Makro der Schaltfläche zu.
* Band: Fügen Sie dem Excel -Band eine benutzerdefinierte Registerkarte oder Schaltfläche hinzu und weisen Sie das Makro zu.
* WORKBUCH_BEFORECLOSE -Ereignis: Geben Sie den Code in das Ereignis `Workbook_BeForeClose" im Modul "ThisWorkbook" ein. Dadurch wird das Makro * vor * Die Arbeitsmappe wird geschlossen. Vorsicht: Dies könnte ein unerwartetes Verhalten sein, wenn dem Benutzer nicht bekannt ist, dass das Makro ausgeführt wird.
* Windows Task Scheduler (erweitert): Verwenden Sie den Windows -Task -Scheduler, um die Excel -Arbeitsmappe zu planen, um das Makro pro Woche zu einer bestimmten Zeit auszuführen. Dies ist der automatischste Ansatz. Sie müssen die Befehlszeilenoptionen für Excel verwenden, um das Arbeitsbuch zu öffnen und das Makro auszuführen (z. B. `excel.exe" c:\ path \ bis \ yoR \ workbook.xlsm " /m" wöchentliche Einstellung "` `). Dies erfordert mehr Setup.
Wenn Sie diese Schritte befolgen und den Code anpassen, können Sie Ihre wöchentlichen Einkommensdaten mit diesem Excel -Makro effizient verwalten. Denken Sie daran, es gründlich zu testen, bevor Sie sich auf wichtige Daten darauf verlassen.