Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1512to1516
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

Sheets zusammenfügen

Sheets zusammenfügen
16.09.2016 14:21:23
H.JÖRG
Hallo zusammen,
ich habe eine Excel Datei mit 15 Arbeitsblättern.
Die ersten 13 Arbeitsblätter haben in der ersten Zeile die gleiche Namensfelder.
Ich möchte das die ersten 13 Arbeitsblätter zusammengefügt werden und in einem separaten Arbeitsblatt (z.B. Zusammengefügt) zusammengefügt werden. Aus dem ersten Arbeitsblatt sollen ab der ersten Zeile (Überschrift) kopiert werden und die restlichen 12 Arbeitsblätter ab Zeile 2.
Was noch super ware das die Datei dann als CSV Datei abgesspeichert wird. Eine Abfrage zum Speicherort sollte abgefragt werden.
Viele Grüße
Jörg

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheets zusammenfügen
16.09.2016 17:21:17
Michael
Hi,
das geht etwa so:
Option Explicit
Sub machen()
Dim shZiel As Worksheet
Dim r As Range
Dim i As Long, shMax As Long, nZ As Long
Dim Pfad As String
Pfad = ThisWorkbook.Path & "\"
shMax = Worksheets.Count
Set shZiel = Sheets("Zusammen")
shZiel.Cells.Clear
' Erstes Blatt wird kopiert
Sheets(1).UsedRange.Copy shZiel.Range("A1")
nZ = shZiel.UsedRange.Rows.Count + 1
' Dann die weiteren
For i = 2 To shMax - 2 ' ab dem zweiten bis zum 3.-letzten
Sheets(i).UsedRange.Offset(1).Copy shZiel.Range("A" & nZ)
nZ = shZiel.UsedRange.Rows.Count + 1
Next
' Blatt wird kopiert und als CSV gespeichert
shZiel.Copy
ActiveWorkbook.SaveAs Filename:=Pfad & "Daten.csv", FileFormat:=xlCSV _
, CreateBackup:=False
' Application.DisplayAlerts = False
ActiveWorkbook.Close
' Application.DisplayAlerts = True
End Sub
Mit Datei: https://www.herber.de/bbs/user/108219.xlsm
Wenn die DisplayAlerts wie oben auskommentiert sind, kannst Du, wenn Du den dann erscheinenden Dialog abbrichst, händisch speichern, wohin Du möchtest.
Schöne Grüße,
Michael
Anzeige
AW: Sheets zusammenfügen
19.09.2016 15:55:53
H.JÖRG
Hallo Michael,
vielen Dank für dein Lösungsvorschlag. Allerdings macht es nicht ganz was ich erwartet habe, denn beim Einfügen (PASTE) sollen die Kopierten Daten als Werte (paste Value) eingefügt warden, da sie sonst umkonvertiert warden. Was müsste ich da ändern, wie sollte der Code aussehen?
Viele Grüße
Jörg
mit pastespecial
19.09.2016 18:57:29
Michael
Hallo Jörg,
das sind nur zwei Änderungen (mit *** markiert):
Option Explicit
Sub machen()
Dim shZiel As Worksheet
Dim r As Range
Dim i As Long, shMax As Long, nZ As Long
Dim Pfad As String
Pfad = ThisWorkbook.Path & "\"
shMax = Worksheets.Count
Set shZiel = Sheets("Zusammen")
shZiel.Cells.Clear
' Erstes Blatt wird kopiert
Sheets(1).UsedRange.Copy
shZiel.Range("A1").PasteSpecial xlPasteValuesAndNumberFormats ' ***
nZ = shZiel.UsedRange.Rows.Count + 1
' Dann die weiteren
For i = 2 To shMax - 2 ' ab dem zweiten bis zum 3.-letzten
Sheets(i).UsedRange.Offset(1).Copy
shZiel.Range("A" & nZ).PasteSpecial xlPasteValuesAndNumberFormats ' ***
nZ = shZiel.UsedRange.Rows.Count + 1
Next
' Blatt wird kopiert und als CSV gespeichert
shZiel.Copy
ActiveWorkbook.SaveAs Filename:=Pfad & "Daten_" & CStr(Timer) & ".csv", _
FileFormat:=xlCSV, CreateBackup:=False
Application.DisplayAlerts = False
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub

Du kannst ja mal in der Hilfe zu pastespecial schauen. Hier werden jetzt WERTE und FORMATE übernommen, im Gegensatz zu reinem Copy, das offensichtlich unerwünschte FORMELN mitkopiert.
Schöne Grüße,
Michael
Anzeige
AW: mit pastespecial
20.09.2016 12:28:52
H.JÖRG
Hallo Michael,
leider funktioniert das Makro nicht so richtig, den nachdem das erste Sheet kopiert und eingefügt wurde, dann fügt er mehrere leere Zeilen und dann anschließend kopiert es das 2 sheet und fügt es dann in das Sheet "Zusammen" ein. Und das geht mit all den anderen Sheets genauso das viele Leerzeilen eingefügt warden.
Wo liegt hier der Fehler
Viele Grüße
Jörg
ohne Datei nicht zu beurteilen
20.09.2016 15:32:42
Michael
Hi Jörg,
kopiert wird ja der "usedrange", das ist alles, wo was drinsteht oder mal was dringestanden ist.
Falls die "Leerzeilen" Formeln enthalten, die nur "nichts" ausgeben, werden sie eben auch mit kopiert.
Es gibt auch andere Möglichkeiten, den zu kopierenden Bereich zu ermitteln, aber das fasse ich nicht ohne Beispieldatei an.
Du kannst auch mal recherchieren nach: Excel vba letzte Zeile ermitteln
Schöne Grüße,
Michael
Anzeige
AW: mit pastespecial
20.09.2016 12:28:56
H.JÖRG
Hallo Michael,
leider funktioniert das Makro nicht so richtig, den nachdem das erste Sheet kopiert und eingefügt wurde, dann fügt er mehrere leere Zeilen und dann anschließend kopiert es das 2 sheet und fügt es dann in das Sheet "Zusammen" ein. Und das geht mit all den anderen Sheets genauso das viele Leerzeilen eingefügt warden.
Wo liegt hier der Fehler
Viele Grüße
Jörg

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige