Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1680to1684
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mehrere Tabellenblätter in neue Datei verschieben

Mehrere Tabellenblätter in neue Datei verschieben
28.03.2019 21:27:42
Richard
Liebe Forumsmitglieder,
ich versuche unten beschriebene Aufgabe zu lösen. Eigentlich dachte ich, ganz einfach. Alles irgendwie schon mal gemacht. Für jeden Teilschritt habe ich Lösungen, die für sich funktionieren. Aber die Kombination der Teilschritte bekomme ich nicht in den Griff. Dabei habe ich verschiedene Varianten ausprobiert. Es kommen bei jeder Variante Fehler, die ich nicht verstehe.
Ich habe eine Datei (wkbQuelle) mit vielen Auswertungen = Tabellenblättern. Eine Auswahl dieser Auswertungen (zunächst 4 Tabellenblätter; wksTemp) möchte ich zusammen in einer neuen Datei (wkbZiel) zusammenfassen (und per Email verteilen).
Dabei sollen nur die Formate und die Werte übernommen werden, da ich in der verteilten Datei keine untereinander verknüpften Excel-Dateien auf dem Server haben möchte. Die Namen der Tabellenblätter sollen übernommen werden.
In diversen Anläufen habe ich entweder verschiedene Laufzeitfehler erhalten oder, bestes Ergebnis, 4 Dateien mit jeweils einem der Arbeitsblätter.
Schließlich war meine Idee über .UsedRange und .Range die Daten in die neue Tabelle zu verschieben. Aber ich erhalte wieder einen Laufzeitfehler 1004, weil die „PasteSpecial-Methode des Range-Objektes nicht ausgeführt werden“ konnte. Bitte?
Wenn ich zu Testzwecken diese Zeile entferne, bekomme ich bei der Kopie des Namens einen Laufzeitfehler, weil Excel „nicht einem Blatt den gleichen Namen geben wie einem anderen Blatt“ kann, „auf die Visual-Basic Bezug nimmt.“ Aber diese Vorgehensweise habe ich für das Verschieben von EINEM Tabellenblatt in eine neue Datei funktionsfähig gesehen!? Und warum sollten in zwei Dateien die Tabellenblätter nicht gleiche Namen haben dürfen?
Wenn ich wieder zu Testzwecken auch diese Zeile entferne, läuft das Makro sauber durch! Hurra, ohne Fehlermeldung!
Leider habe ich dann eine Datei mit korrektem Dateinamen im richtigen Ordner und wie gewünscht mit vier Arbeitsblättern, in der aber jedes Tabellenblatt komplett leer ist. Also auch das Verschieben der UsedRange funktioniert in meinem Skript nicht richtig.
Ich weiß nicht, was ich falsch mache bzw. wo meine Wissenslücke ist. Kann mir jemand bitte helfen, diese Lücke zu schließen?
Vielen Dank im Voraus.
Hier mein (aktuelles) Skript: (Die meisten Variablen habe ich Global definiert, da ich sie in verschiednen Makros brauche, daher hier kaum Dim. Nur falls es nicht eindeutig sein sollte: wksTemp as Worksheet; wkbZiel As Workbook; wkbQuelle As Workbook)
Sub Marketingsreports_erstellen()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.StatusBar = "Verarbeitung läuft. Bitte warten."
Dim i As Integer
'# Vorbereitungen
Call Arbeitsmappe_vorbereiten  'Hier wird der Dateipfad ausgelesen und geprüft, ob benötigte  _
Dateiordner existieren
Call Variablen_auslesen 'hier werden u.a. Stichtage aus dem Datenimport ausgelesen
' Dateinamen und Pfad festlegen
strDateiN = strPfad & "\Auswertungen Marketing\" & strJahr & "_" & strMonat & " " & " _
Marketingauswertung" & ".xlsx"
Set wkbQuelle = ThisWorkbook
'# Neues Workbook anlegen
lngAnzahlTab = Application.SheetsInNewWorkbook  ' Auslesen der Standardanzahl Register Excel
Application.SheetsInNewWorkbook = 4
Set wkbZiel = Workbooks.Add                 ' Neue Arbeitsmappe anlegen
wkbZiel.SaveAs Filename:=strDateiN
'# Tabellen kopieren
i = 1
For Each wksTemp In wkbQuelle.Worksheets(Array("Markenlinien Marketing", _
"Cluster Marketing", "Artikel Marketing", "Trend Marketing"))
Set wksTemp = ActiveSheet
wksTemp.UsedRange.Copy Destination:=wkbZiel.Sheets(i).Range("A1")
wkbZiel.Sheets(i).Range("A1").PasteSpecial xlPasteValues
wkbZiel.Sheets(i).Range("A1").PasteSpecial xlPasteFormats
wkbZiel.Sheets(i).Name = wksTemp.Name
i = i + 1
Next wksTemp
wkbZiel.Close savechanges:=True
'# Zurücksetzen
Set wkbZiel = Nothing
Set wksTemp = Nothing
Application.CutCopyMode = False
Application.SheetsInNewWorkbook = lngAnzahlTab  ' Standardanzahl Register zurücksetzen
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub

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

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Tabellenblätter in neue Datei verschieben
28.03.2019 22:01:23
cysu11
Hi Richard,
probiere mal das:
Sub BlaetterAlsNeueDateiPerMail()
Dim ws As Worksheet
Pfad = "C:\Testordner\"
NeueDatei = "NeueMappe.xlsx"
Worksheets(Array("Tabelle2", "Tabelle3", "Tabelle4", "Tabelle5")).Copy
ActiveWorkbook.SaveAs Pfad & NeueDatei
End Sub
LG
Alexandra
AW: Mehrere Tabellenblätter in neue Datei verschieben
28.03.2019 22:22:52
cysu11
Hi Richard,
mein Code von vorhin, übernimmt (zumindest bei mir Excel 2019) kein Verknüpfungen in der neuen Datei, sondern nurn die Formeln 1:1.
Aber wenn du tatsächlich nur die Werte & Formate in der neuen Datei haben willst, dann so:
Sub BlaetterAlsNeueDatei()
Dim wsh As Worksheet
Pfad = "C:\Testordner\"
NeueDatei = "NeueMappe.xlsx"
Worksheets(Array("Tabelle2", "Tabelle3", "Tabelle4", "Tabelle5")).Copy
ActiveWorkbook.SaveAs Pfad & NeueDatei
Set nd = ActiveWorkbook
For Each wsh In nd.Worksheets
wsh.Activate
wsh.Cells.Copy
wsh.Cells.PasteSpecial xlPasteValues
Application.CutCopyMode = False
Range("A1").Select
Next
nd.Save
End Sub
LG
Alexandra
Anzeige
AW: Mehrere Tabellenblätter in neue Datei
28.03.2019 22:56:31
Richard
Hallo Alexandra,
die zweite Variante ist die von mir gesuchte. Funktioniert genauso, wie ich mir das vorgestellt habe.
Super!
Vielen Dank für Deine Hilfe. Vielen Dank für die tolle Geschwindigkeit!
Beste Grüße
Frank

79 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige