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

Forumthread: Tabellenblatt kopieren, verschieben und speichern

Tabellenblatt kopieren, verschieben und speichern
Harald
Hallo zusammen,
ich habe eine Datei mit vielen Tabellenblättern. Hiervon muss ich stunden- oder tageweise einzelne Blätter per E-Mail versenden. Dafür soll eine Kopie des aktiven Tabellenblattes als eigene Datei abgespeichert werden um es später an eine E- Mail hängen zu können.
Der Code soll folgendes tun
- das aktive Tabellenblatt kopieren, und in eine neue Datei schieben
- der Dateiname soll wie folgt lauten: "Zusatztext" & Tabellenblattname & xls.
- der Pfad zum speichern soll analog dem Ursprungspfad der Hauptdatei sein
Weiß jemand die Lösung? Wäre eine riesige Arbeitserleichterung für mich!
Vielen Dank im voraus.
Gruß, Harald G.
Anzeige
AW: Tabellenblatt kopieren, verschieben und speichern
16.09.2009 13:49:30
JogyB
Hi.
Sub kopierenUndSpeichern()
Dim myPath As String
Application.ScreenUpdating = False
myPath = ActiveSheet.Parent.Path
ActiveSheet.Copy
' activesheet ist nun die Kopie in der neuen Arbeitsmappe
ActiveSheet.Parent.Close True, myPath & "\Zusatztext" & ActiveSheet.Name
Application.ScreenUpdating = True
End Sub
Gruss, Jogy
Anzeige
AW: Tabellenblatt kopieren, verschieben und speichern
16.09.2009 17:46:06
Harald
Hallo Jogy,
vielen, vielen Dank - es funktioniert.
Eine ergänzende Frage habe ich doch noch:
Wenn die Datei bereits besteht und ich das Makro nochmal laufen lasse, kommt die Frage "Soll die vorhandene Datei ersetzt werden?"
Wie muss muss der Code ergänzt werden, damit die vorhandene Daei immer ersetzt wird und nicht gefragt wird.
Gruß, Harald.
Anzeige
Tabellenblatt speichern
16.09.2009 18:55:41
Erich
Hi Harald,
probier mal das hier:

Sub KopierenUndSpeichern2()
Dim strPfad As String, strFil As String
With ActiveWorkbook
strPfad = IIf(Right$(.Path, 1) = "\", .Path, .Path & "\")
strFil = strPfad & "Zusatztext" & ActiveSheet.Name & _
Right$(.Name, Len(.Name) - InStrRev(.Name, ".") + 1)
End With
Application.ScreenUpdating = False
ActiveSheet.Copy
' activesheet ist nun die Kopie in der neuen Arbeitsmappe
If Dir(strFil) > "" Then Kill strFil
ActiveWorkbook.Close True, strFil
Application.ScreenUpdating = True
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
Versionsinfo wichtig
17.09.2009 08:00:43
Tino
Hallo,
in den anderen Beispielen wurde ohne Dateiformat gearbeitet, solltest Du mal auf xl2007 oder höher wechseln, kann es zu diesem Fehler kommen wenn Du ohne Dateiformatangabe speichern möchtest.
Userbild
Hier die geänderte Version ohne Meldung wenn Datei schon vorhanden.
Sub Beispiel()
Dim strPfad As String, FileEx As String

With ThisWorkbook
    FileEx = Right$(.Name, Len(.Name) - InStrRev(.Name, ".") + 1)
    strPfad = IIf(Right$(.Path, 1) = "\", .Path, .Path & "\")
    
    .ActiveSheet.Copy
    
    With ActiveWorkbook
      Application.DisplayAlerts = False
        .SaveAs Filename:=strPfad & "Zusatztext" & ActiveSheet.Name & FileEx, FileFormat:=ThisWorkbook.FileFormat
        .Close False
      Application.DisplayAlerts = True
    End With
End With
End Sub

Gruß Tino
Anzeige
sollte nicht an Erich, sollte zu Harald G. oT.
17.09.2009 08:09:25
Tino
sorry
AW: Tabellenblatt kopieren, verschieben und speichern
16.09.2009 14:00:51
Tino
Hallo,
so müsste es gehen.
Sub Beispiel()
Dim strPfad As String, FileEx As String

With ThisWorkbook
    FileEx = Right$(.Name, Len(.Name) - InStrRev(.Name, ".") + 1)
    strPfad = IIf(Right$(.Path, 1) = "\", .Path, .Path & "\")
    
    .ActiveSheet.Copy
    
    With ActiveWorkbook
     .SaveAs Filename:=strPfad & "Zusatztext" & ActiveSheet.Name & FileEx, FileFormat:=ThisWorkbook.FileFormat
     .Close False
    End With
End With
End Sub
Gruß Tino
Anzeige
Bei Codes funktionieren!
17.09.2009 01:35:50
Harald
Vielen Dank auch an Erich und Tino!!!!!!!
Gruß aus Köln, Harald G.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Tabellenblatt kopieren, verschieben und speichern in Excel


Schritt-für-Schritt-Anleitung

Um ein Excel Tabellenblatt zu kopieren und in einer neuen Datei zu speichern, kannst du den folgenden VBA-Code verwenden:

Sub kopierenUndSpeichern()
    Dim myPath As String
    Application.ScreenUpdating = False
    myPath = ActiveSheet.Parent.Path
    ActiveSheet.Copy
    ' Das aktive Tabellenblatt ist nun die Kopie in der neuen Arbeitsmappe
    ActiveSheet.Parent.Close True, myPath & "\Zusatztext" & ActiveSheet.Name
    Application.ScreenUpdating = True
End Sub
  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu, indem du auf Einfügen > Modul klickst.
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den VBA-Editor und kehre zu Excel zurück.
  5. Führe das Makro aus, um das aktive Tabellenblatt zu kopieren und zu speichern.

Häufige Fehler und Lösungen

Fehler: "Soll die vorhandene Datei ersetzt werden?"

Lösung: Um diese Bestätigungsnachricht zu umgehen, kannst du den Code so anpassen, dass die vorhandene Datei automatisch überschrieben wird:

If Dir(strFil) > "" Then Kill strFil

Diese Zeile überprüft, ob die Datei existiert und löscht sie vor dem Speichern der neuen Datei.


Alternative Methoden

Neben VBA gibt es auch Excel-Shortcuts, um ein Arbeitsblatt zu kopieren:

  1. Wähle das gewünschte Tabellenblatt aus.
  2. Halte die STRG-Taste gedrückt, klicke auf das Blatt und ziehe es an die gewünschte Position. Dadurch wird das Blatt dupliziert.

Diese Methode ist schnell und erfordert keine Programmierung.


Praktische Beispiele

Beispiel 1: Excel VBA Tabellenblatt kopieren in neue Datei speichern

Hier ist ein Beispiel für das Kopieren eines Excel Datenblatts in einer neuen Datei:

Sub KopierenUndSpeichern2()
    Dim strPfad As String, strFil As String
    With ActiveWorkbook
        strPfad = IIf(Right$(.Path, 1) = "\", .Path, .Path & "\")
        strFil = strPfad & "Zusatztext" & ActiveSheet.Name & _
        Right$(.Name, Len(.Name) - InStrRev(.Name, ".") + 1)
    End With
    Application.ScreenUpdating = False
    ActiveSheet.Copy
    If Dir(strFil) > "" Then Kill strFil
    ActiveWorkbook.Close True, strFil
    Application.ScreenUpdating = True
End Sub

Beispiel 2: Excel Arbeitsblatt duplizieren

Du kannst auch die Copy-Methode verwenden, um mehrere Blätter gleichzeitig zu kopieren:

Sub BlätterDuplizieren()
    Sheets(Array("Blatt1", "Blatt2")).Copy After:=Sheets(Sheets.Count)
End Sub

Tipps für Profis

  • Nutze die DisplayAlerts-Eigenschaft, um Warnmeldungen zu deaktivieren, wenn die Datei überschrieben wird.
  • Speichere deinen VBA-Code in einem Add-In, um ihn in verschiedenen Excel-Dateien verwenden zu können.
  • Verwende Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind, was die Fehlersuche erleichtert.

FAQ: Häufige Fragen

1. Wie kann ich ein ganzes Tabellenblatt kopieren?
Um ein ganzes Tabellenblatt zu kopieren, verwende die ActiveSheet.Copy-Methode. Dies kopiert das gesamte Blatt in eine neue Arbeitsmappe.

2. Gibt es eine Tastenkombination zum Kopieren eines Tabellenblatts?
Ja, du kannst das Tabellenblatt mit der Maus ziehen, während du die STRG-Taste gedrückt hältst, um es schnell zu duplizieren.

3. Wie kann ich ein Excel Blatt verschieben oder kopieren?
Rechtsklicke auf das Blatt, wähle "Verschieben oder Kopieren" und folge den Anweisungen im Dialogfeld.

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