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

Forumthread: VBA: Tabellenblatt in neue Mappe kopieren

VBA: Tabellenblatt in neue Mappe kopieren
30.09.2017 11:00:04
Fritz
Hallo Forumsbesucher,
ich bitte um Hilfe beim Umsetzen folgenden Vorhabens:
Ich möchte aus meiner Mappe das Tabellenblatt "Daten" in eine neue Mappe kopieren.
In der Kopie sollten zwar alle Formatierungen erhalten bleiben, sämtliche Zellinhalte jedoch als Wert eingefügt werden. Die Datei mit dem kopierten Tabellenblatt sollte im gleichen Ordner mit dem Bezeichnung der Quelldatei angefügt durch das jeweilige Datum gespeichert werden.
Für eure Unterstützung besten Dank im Voraus.
mfg
Fritz
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA: Tabellenblatt in neue Mappe kopieren
30.09.2017 11:09:17
Hajo_Zi
Hallo Fritz,
http://hajo-excel.de/vba_dateikopie.htm

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Anzeige
AW: VBA: Tabellenblatt in neue Mappe kopieren
30.09.2017 11:36:04
Fritz
Hallo Hajo,
vielen Dank für die Unterstützung.
Meine VBA-Kenntnisse reichen nicht aus, um den Code auf meine Bedürfnisse anzupassen, u.a. möchte ich nur das Tabellenblatt "Daten" in die neue Mappe kopieren usw.
Stelle deshalb den Thread wieder auf "offen"
mfg
Fritz
AW: VBA: Tabellenblatt in neue Mappe kopieren
30.09.2017 11:48:15
Hajo_Zi
Hallo Fritz,
ändere folgendes
'For InI = .Worksheets.Count To 1 Step -1
With Worksheets("Daten")
'Next InI
End With
Ich gehe davon aus Suchen ist nicht das Problem.
Gruß Hajo
Anzeige
AW: VBA: Tabellenblatt in neue Mappe kopieren
30.09.2017 11:55:40
Fritz
Hallo Hajo,
zunächst in Kürze, da ich kurzfristig weg muss:
Vielen Dank für die weitere Unterstützung. Werde nach meiner Rückkehr versuchen, das Ganze auf meine Bedürfnisse anzupassen, auch Datei in denselben Ordner usw.
Würde mich aber wundern, wenn ich das hinkriege, da meine VBA-Kenntnisse sehr gering sind (vorsichtig ausgedrückt).
Melde mich aber ggf. noch einmal.
Gruß
Fritz
Anzeige
Mal ein Beispiel...
30.09.2017 12:01:09
Case
Hallo Fritz, :-)
... bezogen auf Deine Frage: ;-)
Option Explicit
Public Sub Main()
Application.ScreenUpdating = False
Worksheets("Daten").Copy
With ActiveSheet.UsedRange
.Value = .Value
End With
ActiveWorkbook.Close True, ThisWorkbook.Path & "\" & Left(ThisWorkbook.Name, _
(InStrRev(ThisWorkbook.Name, ".") - 1)) & Format(Now, "_DD_MM_YYYY")
Application.ScreenUpdating = True
End Sub
Servus
Case

Anzeige
AW: Mal ein Beispiel...
30.09.2017 20:51:14
Fritz
Hallo Case,
bitte um Entschuldigung, dass ich mich erst jetzt wieder melde, aber ich bin spät zurückgekommen.
Vielen Dank für deine Hilfe.
Dein Code macht eigentlich genau das, was ich wollte, allerdings wird die Kopie (bei mir) ohne die Dateierweiterung (xlsx) gespeichert. Wenn ich die Datei entsprechend umbenenne, lässt sie sich problemlos öffnen. Es wäre natürlich super, wenn die Datei gleich im xlsx Format gespeichert würde.
Nochmals vielen Dank
mfg
Fritz
Anzeige
So sollte es...
30.09.2017 21:41:38
Case
Hallo Fritz, :-)
... eigentlich laufen: ;-)
Option Explicit
Public Sub Main()
Application.ScreenUpdating = False
Worksheets("Daten").Copy
With ActiveSheet.UsedRange
.Value = .Value
End With
With ActiveWorkbook
.SaveAs ThisWorkbook.Path & "\" & Left(ThisWorkbook.Name, _
(InStrRev(ThisWorkbook.Name, ".") - 1)) & Format(Now, "_DD_MM_YYYY"), 51
.Close False
End With
Application.ScreenUpdating = True
End Sub
Servus
Case

Anzeige
AW: So sollte es...
30.09.2017 21:58:26
Fritz
Hallo Case,
vielen Dank.
Die Kopie erscheint nach wie vor ohne Dateierweiterung. Sie lässt sich aber jetzt mit "Ja" nach folgendem Hinweis öffnen:
"Sie versuchen eine Datei zu öffnen, ... deren Format von dem in der Dateierweiterung angegebenen abweicht. Stellen Sie sicher .... Möchten Sie die Datei jetzt öffnen?"
mfg
Fritz
Anzeige
Eigentlich ist es...
30.09.2017 22:25:05
Case
Hallo Fritz, :-)
... unnötig die Erweiterung mit anzugeben - das macht die 51 (siehe hier)
Probiere es mal so: ;-)
Option Explicit
Public Sub Main()
Application.ScreenUpdating = False
Worksheets("Daten").Copy
With ActiveSheet.UsedRange
.Value = .Value
End With
With ActiveWorkbook
.SaveAs ThisWorkbook.Path & "\" & Left(ThisWorkbook.Name, _
(InStrRev(ThisWorkbook.Name, ".") - 1)) & Format(Now, "_DD_MM_YYYY") & ".xlsx", 51
.Close False
End With
Application.ScreenUpdating = True
End Sub
Servus
Case

Anzeige
AW: Eigentlich ist es...
30.09.2017 22:31:35
Fritz
Hallo Case,
jetzt funktioniert es. Super!!
Ganz herzlichen Dank.
mfg
Fritz
;

Forumthreads zu verwandten Themen

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 in neue Arbeitsmappe kopieren und umbenennen mit VBA


Schritt-für-Schritt-Anleitung

Um ein Tabellenblatt in eine neue Arbeitsmappe zu kopieren und es dabei umzubenennen, kannst du den folgenden VBA-Code verwenden. Dieser Code kopiert das Tabellenblatt "Daten", wandelt die Zellinhalte in Werte um und speichert die neue Datei im gleichen Ordner wie die Originaldatei.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

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

    Option Explicit
    Public Sub Main()
       Application.ScreenUpdating = False
       Worksheets("Daten").Copy
       With ActiveSheet.UsedRange
           .Value = .Value
       End With
       With ActiveWorkbook
           .SaveAs ThisWorkbook.Path & "\" & Left(ThisWorkbook.Name, _
           (InStrRev(ThisWorkbook.Name, ".") - 1)) & Format(Now, "_DD_MM_YYYY") & ".xlsx", 51
           .Close False
       End With
       Application.ScreenUpdating = True
    End Sub
  4. Schließe den VBA-Editor und führe das Makro aus, indem du ALT + F8 drückst und Main auswählst.


Häufige Fehler und Lösungen

  • Fehler: Datei wird ohne Dateierweiterung gespeichert

    • Lösung: Stelle sicher, dass du die Dateierweiterung .xlsx im .SaveAs-Befehl angibst, wie im obigen Code gezeigt.
  • Fehler: Das Tabellenblatt "Daten" existiert nicht

    • Lösung: Überprüfe den Namen des Tabellenblatts in deinem Excel-Dokument. Der Name muss exakt übereinstimmen.

Alternative Methoden

Falls du lieber eine andere Methode nutzen möchtest, kannst du die folgenden Schritte manuell durchführen:

  1. Klicke mit der rechten Maustaste auf das Tabellenblatt "Daten" und wähle Verschieben oder Kopieren.
  2. Wähle Neue Arbeitsmappe aus und aktiviere das Kontrollkästchen Kopie erstellen.
  3. Klicke auf OK, um das Tabellenblatt in eine neue Arbeitsmappe zu kopieren.
  4. Speichere die neue Arbeitsmappe im gewünschten Ordner.

Praktische Beispiele

Hier ist ein Beispiel, wie du ein Excel-Makro weiter anpassen kannst:

  • Kopiere mehrere Tabellenblätter: Um mehrere Tabellenblätter in eine neue Arbeitsmappe zu kopieren, kannst du die Schleife For Each verwenden:

    Option Explicit
    Public Sub CopyMultipleSheets()
       Dim ws As Worksheet
       Application.ScreenUpdating = False
       For Each ws In ThisWorkbook.Worksheets
           ws.Copy After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
       Next ws
       ActiveWorkbook.SaveAs ThisWorkbook.Path & "\Kopierte_Arbeitsmappe.xlsx", 51
       ActiveWorkbook.Close
       Application.ScreenUpdating = True
    End Sub

Tipps für Profis

  • Nutze die Application.DisplayAlerts-Eigenschaft, um unerwünschte Dialogfelder beim Speichern zu unterdrücken.
  • Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass dein Code robust ist.

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
       MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Wie kann ich den Namen des neuen Arbeitsblatts ändern? Du kannst den Namen des neuen Arbeitsblatts mit ActiveSheet.Name = "NeuerName" nach dem Kopieren ändern.

2. Was passiert, wenn ich mehrere Tabellenblätter kopiere? Wenn du mehrere Tabellenblätter in eine neue Arbeitsmappe kopierst, werden alle Blätter in der Reihenfolge kopiert, in der sie in der Originalmappe erscheinen.

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