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

Forumthread: Blatt kopieren + unter akt. Datum einfügen

Blatt kopieren + unter akt. Datum einfügen
Anne
Hallo an alle,
ich hab folgende Frage: Gibt es eine Möglichkeit, dass mein Makro das aktuelle Tabellenblatt kopiert und dieses in einer anderen Datei unter dem aktuellen Datum (als Tabellenblattname) gespeichert wird?Dies sollte dann immer hinter den vorher gehenden Tabellenblättern abgespeichert werden, so dass man am Ende mehrere Tabellenblätter in aufsteigender Reihenfolge mit z. B. "01.02.2010" dann "02.02.2010" usw. hat.
Ich würde mich über eine kleine Hilfestellung freuen!
Gruß Anne
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Blatt kopieren + unter akt. Datum einfügen
20.01.2010 13:27:45
Tino
Hallo,
kannst diesen Code mal testen.
Function CheckTabellen(strName$, oWB As Workbook) As Boolean
On Error Resume Next
CheckTabellen = oWB.Sheets(strName).Index > 0
End Function
Sub test()
Dim oWB As Workbook
Dim i As Integer, booCopy As Boolean, booNichtOffen As Boolean
On Error Resume Next
'Datei offen?
Set oWB = Workbooks("Ziel.xls")
On Error GoTo 0
If oWB Is Nothing Then
'Datei nicht offen
Set oWB = Workbooks.Open("D:\Ordner\Ziel.xls")
booNichtOffen = True
End If
If CheckTabellen(CStr(Date), oWB) Then
If booNichtOffen Then oWB.Close False
MsgBox "Tabelle mit den Namen '" & CStr(Date) & "' ist schon vorhanden!"
End If
If Not oWB.ReadOnly Then
For i = 1 To oWB.Sheets.Count
If IsDate(oWB.Sheets(i).Name) Then
If Date > CDate(oWB.Sheets(i).Name) Then
ThisWorkbook.ActiveSheet.Copy After:=oWB.Sheets(i)
oWB.Sheets(i + 1).Name = Date
booCopy = True
Exit For
End If
End If
Next i
If Not booCopy Then
ThisWorkbook.ActiveSheet.Copy After:=oWB.Sheets(oWB.Sheets.Count)
oWB.Sheets(oWB.Sheets.Count).Name = Date
End If
If booNichtOffen Then
oWB.Close True
Else
oWB.Save
End If
MsgBox "Tabelle erfolgreich übertragen", vbInformation
Else
If booNichtOffen Then oWB.Close False
MsgBox "Ziel ist Schreibgeschützt!", vbCritical, "Fehler"
End If
End Sub
Den Dateinamen und den Pfad musst Du im Code noch anpassen.
Ist die Datei bereits offen, wird diese verwendet.
Ist die Datei nicht offen wird diese geöffnet.
Zudem erfolgt noch eine Prüfung ob die Tabelle schon vorhanden ist.
Gruß Tino
Anzeige
AW: Blatt kopieren + unter akt. Datum einfügen
20.01.2010 13:38:47
Tino
Hallo,
da fehlt noch ein Exit Sub
ersetzte die Zeilen
If CheckTabellen(CStr(Date), oWB) Then
If booNichtOffen Then oWB.Close False
MsgBox "Tabelle mit den Namen '" & CStr(Date) & "' ist schon vorhanden!"
End If

durch diese
If CheckTabellen(CStr(Date), oWB) Then
If booNichtOffen Then oWB.Close False
MsgBox "Tabelle mit den Namen '" & CStr(Date) & "' ist schon vorhanden!"
Exit Sub
End If

Gruß Tino
Anzeige
AW: Blatt kopieren + unter akt. Datum einfügen
20.01.2010 15:44:50
Anne
Hallo Tino,
ich habe die entsprechende Passage ersetzt.
Nochmals Dankeschön!
Gruß Tino
AW: Blatt kopieren + unter akt. Datum einfügen
20.01.2010 14:25:04
Anne
Hallo Tino,
Es funktioniert super!
Ich probiere es morgen nochmal, ob die Tabellenblätter in der richtigen Reihenfolge sind.
Viele Dank an dich!
Gruß Anne
;

Forumthreads zu verwandten Themen

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

Tabellenblatt kopieren und unter aktuellem Datum speichern


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei, in der du das Makro verwenden möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu:
    • Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“.
    • Wähle „Einfügen“ und dann „Modul“.
  4. Kopiere den folgenden VBA-Code in das Modul:
Function CheckTabellen(strName$, oWB As Workbook) As Boolean
    On Error Resume Next
    CheckTabellen = oWB.Sheets(strName).Index > 0
End Function

Sub test()
    Dim oWB As Workbook
    Dim i As Integer, booCopy As Boolean, booNichtOffen As Boolean
    On Error Resume Next
    'Datei offen?
    Set oWB = Workbooks("Ziel.xls")
    On Error GoTo 0
    If oWB Is Nothing Then
        'Datei nicht offen
        Set oWB = Workbooks.Open("D:\Ordner\Ziel.xls")
        booNichtOffen = True
    End If
    If CheckTabellen(CStr(Date), oWB) Then
        If booNichtOffen Then oWB.Close False
        MsgBox "Tabelle mit dem Namen '" & CStr(Date) & "' ist schon vorhanden!"
        Exit Sub
    End If
    If Not oWB.ReadOnly Then
        For i = 1 To oWB.Sheets.Count
            If IsDate(oWB.Sheets(i).Name) Then
                If Date > CDate(oWB.Sheets(i).Name) Then
                    ThisWorkbook.ActiveSheet.Copy After:=oWB.Sheets(i)
                    oWB.Sheets(i + 1).Name = Date
                    booCopy = True
                    Exit For
                End If
            End If
        Next i
        If Not booCopy Then
            ThisWorkbook.ActiveSheet.Copy After:=oWB.Sheets(oWB.Sheets.Count)
            oWB.Sheets(oWB.Sheets.Count).Name = Date
        End If
        If booNichtOffen Then
            oWB.Close True
        Else
            oWB.Save
        End If
        MsgBox "Tabelle erfolgreich übertragen", vbInformation
    Else
        If booNichtOffen Then oWB.Close False
        MsgBox "Ziel ist Schreibgeschützt!", vbCritical, "Fehler"
    End If
End Sub
  1. Passe den Dateinamen und den Pfad im Code an deine Bedürfnisse an.
  2. Schließe den VBA-Editor und speichere deine Excel-Datei als Makro-aktivierte Datei (*.xlsm).
  3. Führe das Makro aus, um das aktuelle Tabellenblatt zu kopieren und unter dem aktuellen Datum zu speichern.

Häufige Fehler und Lösungen

  • Tabelle mit dem Namen 'Datum' ist schon vorhanden!

    • Stelle sicher, dass du das aktuelle Datum als Tabellenblattname verwendest. Wenn das Blatt bereits existiert, wird keine neue Tabelle erstellt.
  • Ziel ist Schreibgeschützt!

    • Überprüfe, ob die Zielarbeitsmappe (Ziel.xls) schreibgeschützt ist oder ob du die erforderlichen Berechtigungen hast.
  • Datei nicht gefunden!

    • Stelle sicher, dass der angegebene Pfad zur Zielarbeitsmappe korrekt ist. Überprüfe auch, ob die Datei tatsächlich existiert.

Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du das Blatt auch manuell kopieren und umbenennen:

  1. Klicke mit der rechten Maustaste auf das Tabellenblatt, das du kopieren möchtest.
  2. Wähle „Verschieben oder Kopieren“.
  3. Wähle die Zielarbeitsmappe aus oder erstelle eine neue.
  4. Aktiviere das Kontrollkästchen „Kopie erstellen“ und klicke auf „OK“.
  5. Benenne das kopierte Blatt manuell nach dem aktuellen Datum.

Praktische Beispiele

Wenn du das Makro erfolgreich ausgeführt hast, wirst du sehen, dass die neuen Tabellenblätter in aufsteigender Reihenfolge erstellt werden. Zum Beispiel:

  • 01.02.2023
  • 02.02.2023
  • 03.02.2023

Jedes Mal, wenn du das Makro ausführst, wird das aktuelle Blatt unter dem heutigen Datum gespeichert.


Tipps für Profis

  • Automatisierung: Du kannst das Makro so anpassen, dass es automatisch zu festgelegten Zeiten ausgeführt wird, indem du Aufgabenplanung oder Excel-Add-Ins verwendest.
  • Dynamische Dateinamen: Verwende dynamische Variablen für Dateinamen und Pfade, um die Handhabung zu erleichtern.
  • Fehlerprotokollierung: Implementiere eine Fehlerprotokollierung im Makro, um zu verfolgen, welche Blätter erfolgreich kopiert wurden und ob Fehler aufgetreten sind.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um zusätzliche Informationen zu speichern? Du kannst weitere Variablen und Parameter im Makro hinzufügen, um Informationen wie Zeitstempel oder Notizen zu speichern.

2. Funktioniert das auch in Excel Online? Die Verwendung von Makros ist in Excel Online nicht möglich. Du musst die Desktop-Version von Excel verwenden, um dieses Makro auszuführen.

3. Was passiert, wenn ich das Makro versehentlich lösche? Du kannst das Makro jederzeit wiederherstellen, solange du eine Sicherungskopie deiner Excel-Datei hast. Ansonsten musst du den VBA-Code erneut eingeben.

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