Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
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

Verschiedene Blätter automatisiert zusammenfassen

Verschiedene Blätter automatisiert zusammenfassen
24.12.2014 13:56:59
Stefan
Hallo, ich suche eine Möglichkeit verschiedene Blätter in ein einziges zu kopieren.
Folgende Ausgangssituation:
Ich habe 19 Blätter mit je 17 Spalten. Jedes Blatt hat zwischen 200 und 3000 Zeilen.
Was ich gerne Hätte:
Ein einziges Blatt mit 17 Spalten und (insgesamt) etwa 22.000 Zeilen.
Jetzt sagt Ihr sicher: STRG+A und zusammenkopieren. Das würde ich auch machen, wenns eine einmalige Aufgabe wäre. Die Blätter müssen leider getrennt bleiben zum bearbeiten (der übersicht wegen) und zusammengefasst werden um das Ganze ins Programm zu überspielen. Das überspielen findet ca. 2-3 mal pro Jahr statt, wesswegen ich das ganze gerne mit nem Makro oder VBA machen würde. Nur leider hab ich kaum Ahnung davon. :(
Ich stelle mir das so vor:
Das VBA Programm sollte eine neue Datei erzeugen, dann klappert es Blatt 1 ab bis zum letzten Eintrag (Achtung, es sind auch Leerzeilen dabei), kopiert das und fügt die WERTE dann in der Liste ein. Dann weiter mit Blatt 2 und anhängen... Blatt 3 und so weiter.
Ich brauche bloss unbedingt die Werte (Inhalte einfügen - Werte), weil vieles berechnet wird. Nicht daß da irgendwo was verfälscht wird, den Fehler könnte man unmöglich rausfinden bei den vielen Daten. Ich möchte das Ergebnis dann als Tab getrennte TXT Datei exportieren und in die Warenwirtschaft einspielen.
Wie kann ich das am besten machen?

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verschiedene Blätter automatisiert zusammenfassen
25.12.2014 16:03:17
ransi
Hallo Stefan,
Spiel mal etwas hiermit herum:
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Sub machs()
    Dim objWB As Workbook
    Dim objWS As Worksheet
    Dim L As Long
    Dim vntArr As Variant
    Set objWB = Workbooks.Add 'Das VBA Programm sollte eine neue Datei erzeugen,..
    L = 1
    For Each objWS In ThisWorkbook.Worksheets 'dann klappert es Blatt 1...ab
        With objWS
            vntArr = .Range("A1", .Cells(.Rows.Count, 17).End(xlUp)).Value 'kopiert das...
            objWB.Sheets(1).Cells(L, 1).Resize(UBound(vntArr), 17) = vntArr '...und fügt die WERTE dann in der Liste ein.
            L = L + UBound(vntArr)
        End With
    Next 'Dann weiter mit Blatt 2 und anhängen... Blatt 3 und so weiter.
    With objWB
        .SaveAs Filename:="C:\XYZ.txt", FileFormat:=xlText, CreateBackup:=False '...als Tab getrennte TXT Datei exportieren...
        .Close (True)
    End With
End Sub


ransi

Anzeige
Frage zum Code
25.12.2014 17:16:44
WalterK
Hallo ransi,
ich bin zwar nicht der Fragesteller, hätte aber trotzdem eine Frage zu Deinem Code:
Was muss ich ändern/einfügen, damit die Länge der Blätter jeweils von der Spalte B ermittelt wird.
Besten Dank und Servus, Walter

AW: Frage zum Code
25.12.2014 18:15:53
ransi
Hallo Walter,
.Cells(.Rows.Count, 17).End(xlUp) ist die letzte gefüllte Zelle in Spalte 17 (Q:Q)
.Cells(.Rows.Count, 2).End(xlUp) ist die letzte gefüllte Zelle in Spalte 2 (B:B)
ransi

AW: Frage zum Code
25.12.2014 18:30:44
WalterK
Hallo ransi,
erstmal Danke für Deine Hilfe.
Wenn ich den Codeteil auf ".Cells(.Rows.Count, 2).End(xlUp)" ändere werden aber nur die Spalten A und B eingelesen. Bei den restlichen Spalten erscheint #NV.
Danke und Servus, Walter

Anzeige
hab es so umgebaut , probiers mal
25.12.2014 18:38:59
robert

Sub machs()
Dim objWB As Workbook
Dim objWS As Worksheet
Dim L As Long
Dim vntArr As Variant
Dim lsp As Long
Set objWB = Workbooks.Add 'Das VBA Programm sollte eine neue Datei erzeugen,..
L = 1
For Each objWS In ThisWorkbook.Worksheets 'dann klappert es Blatt 1...ab
With objWS
lsp = .Cells(1, Columns.Count).End(xlToLeft).Column
vntArr = .Range("A1", .Cells(.Rows.Count, lsp).End(xlUp)).Value 'kopiert das...
objWB.Sheets(1).Cells(L, 1).Resize(UBound(vntArr), lsp) = vntArr '...und fügt die  _
WERTE dann in der Liste ein.
L = L + UBound(vntArr)
End With
Next 'Dann weiter mit Blatt 2 und anhängen... Blatt 3 und so weiter.
With objWB
.SaveAs Filename:="C:\XYZ.txt", FileFormat:=xlText, CreateBackup:=False '...als Tab  _
getrennte TXT Datei exportieren...
.Close (True)
End With
End Sub

Anzeige
AW: hab es so umgebaut , probiers mal
25.12.2014 18:56:29
WalterK
Hallo Robert,
habe Deinen Code laufen lassen, das Ergebnis ist allerdings das selbe: die Länge der einzulesenden Blätter orientiert sich nach der letzten Spalte, in meinem Fall nach Spalte 20!
Danke uns Servus, Walter
zur InFo:
Den Teil mit der Speicherung als txt.Datei habe ich weggelassen, da ich nicht brauche.

lng_Letzte = .Cells(.Rows.Count, 2).End(xlUp).Row
25.12.2014 19:15:32
ransi
Hallo Walther,
Du suchst die Zeilennummer der letzten belegten Zelle in Spalte B:B und willst dann die Daten aus A1:Q & Zeilennummer ?
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Sub machs()
    Dim objWB As Workbook
    Dim objWS As Worksheet
    Dim L As Long
    Dim lng_Letzte As Long
    Dim vntArr As Variant
    Set objWB = Workbooks.Add 'Das VBA Programm sollte eine neue Datei erzeugen,..
    L = 1
    For Each objWS In ThisWorkbook.Worksheets 'dann klappert es Blatt 1...ab
        With objWS
            lng_Letzte = .Cells(.Rows.Count, 2).End(xlUp).Row 'Zeilennummer der letzten gefüllten Zelle in B:B
            vntArr = .Range("A1", .Cells(lng_Letzte, 17)).Value
            'oder:
            'vntArr = .Range("A1:Q" & lng_Letzte).Value
            objWB.Sheets(1).Cells(L, 1).Resize(UBound(vntArr), 17) = vntArr
            L = L + UBound(vntArr)
        End With
    Next 'Dann weiter mit Blatt 2 und anhängen... Blatt 3 und so weiter.
    With objWB
        .SaveAs Filename:="C:\XYZ.txt", FileFormat:=xlText, CreateBackup:=False '...als Tab getrennte TXT Datei exportieren...
        .Close (True)
    End With
End Sub


ransi

Anzeige
AW: lng_Letzte = .Cells(.Rows.Count, 2).End(xlUp).Row
25.12.2014 20:08:24
WalterK
Hallo ransi, Hallo Robert,
mein Wunsch ist, dass die Anzahl der Zeilen und die Anzahl der Spalten aus den jeweiligen Blättern ermittelt wird.
Die Länge der Zeilen soll sich aus der Spalte B:B ergeben und die Anzahl der Spalten aus der Zeile 1.
Hier ein Beispiel wie die Blätter aussehen können.
Beim Code fehlt jetzt nur noch die Variable für die letzte Spaltennummer.
Hier meine Beispielmappe:
https://www.herber.de/bbs/user/94583.xlsm
Danke und Servus, Walter

AW: hier meine Datei...
25.12.2014 19:16:17
WalterK
Hallo Robert,
ich habe jetzt Deine Blätter etwas abgeändert.
https://www.herber.de/bbs/user/94581.xlsm
Die Länge der Blätter sollte sich immer nach der Spalte B orientieren.
Servus, Walter

Anzeige
OK, jetzt passt es!
25.12.2014 20:11:11
WalterK
Hallo Robert, Hallo ransi,
jetzt ist genau so wie ich es haben wollte.
Danke an beide Helfer.
Servus, Walter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige