peppino
Goto Top

VBA Zeilen übertragen

Guten Tag zusammen,

Ich würde gerne eine Vielzahl von Dateien (alle im gleichen Ordner) ansteuern und deren Inhalt in eine neue Datei (Datei_konsolidierung nennen wir sie mal) kopieren. Die Dateien sind alle gleich aufgebaut und sollen (so wie es sich gehört) zu einer (Datei_konsolidierung) vereint werden.
Jetzt sollte es natürlich so sein, dass wenn alle Zeilen der ersten Datei in die Datei_konsolidierung kopiert worden sind und die Zeilen aus der nächsten Datei angefügt werden sollen, der bereits bestehende Inhalt nicht überschrieben werden soll, sondern unten angefügt werden (wie sich jeder sicher denken kann =) ).

Jetzt müsste der Code so angepasst werden, das nicht immer nur Zeile 10 des jeweiligen Dokuments kopiert wird sondern alle Zeilen die Inhalt haben.

Crossposting:http://www.clever-excel-forum.de/thread-13983.html

Sub Sammeln()
sQuellpfad = "C:\Users\Felix.Bachert\Desktop\LN´s"
QZeile = 10 'Zeile in Quelldatei
QSpalten = 15 'Spaltenanzahl
QSpalteAb = "A" ' ab dieser Spalte insgesamt "QSpalten" Spaltenwerte übernehmen
ZZeile = 10 'erste Zeile in Zieldatei
ZSpalteAb = "A" 'erste Spalte in Zieldatei
Set wbGes = ActiveWorkbook
Set fso = CreateObject("Scripting.FileSystemObject")
For Each oFile In fso.GetFolder(sQuellpfad).Files
If LCase(Right(oFile.Name, 5)) = ".xlsx" Then 'nur ".xls"-Dateien verarbeiten; bei ".xlsx" natürlich die letzten 5 Zeichen vergleichen
Application.Workbooks.Open oFile.Path 'Quelldatei öffnen
'Zellen lt Vorgabe aus Quelldatei lesen und in aktuelle Zeile der Zieldatei schreiben
wbGes.Worksheets(1).Cells(ZZeile, ZSpalteAb).Resize(1, QSpalten).Value = ActiveWorkbook.Worksheets(1).Cells(QZeile, QSpalteAb).Resize(1, QSpalten).Value
ActiveWorkbook.Close False 'Quelldatei schließen
ZZeile = ZZeile + 1 'Zeilennummer Zieldatei erhöhen
End If
Next
wbGes.Save 'Zieldatei speichern
End Sub

Vielen Dank für Eure Hilfe vorab

Content-ID: 362401

Url: https://administrator.de/contentid/362401

Ausgedruckt am: 24.11.2024 um 17:11 Uhr

emeriks
emeriks 25.01.2018 um 16:32:17 Uhr
Goto Top
Hi,
also Dateien "zusammenkleben" kann man ganz einfach auf der Konsole

copy /b datei1 + datei2 datei3
/code>

E.
135321
Lösung 135321 25.01.2018 um 16:40:15 Uhr
Goto Top
Peppino
Peppino 25.01.2018 um 16:48:56 Uhr
Goto Top
Hi Joe,
tausend Dank.
Kann ´man das nun noch so gestaltet dass alle Dateien die im gleichen Ordner liegen automatisch abgefragt werden, ohne dass man sie auswählen muss?
das wäre der Wahnsinn wenn das noch geht.

Grüße
135321
Lösung 135321 25.01.2018 aktualisiert um 16:55:43 Uhr
Goto Top
Sub ChooseFilesAndCopy()
    Dim files As Variant, folder as String, file as String
    'Ordner  
    folder = "D:\Ordner"  
    file = Dir(folder & "\*.xlsx")  
        while file <> ""  
            'Datei auf Sheet 1 öffnen  
            With GetObject(folder & "\" & file).Sheets(1)  
                'Zelle A3:Q<ENDE> in die nächste freie Zelle in Spalte A kopieren  
                .Range("A3:Q" & .Cells(Rows.Count,"A").End(xlUp).Row).Copy ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)  
                'Sheet schließen  
                .Parent.Close False
            End With
        file = Dir
        wend
End Sub
Peppino
Peppino 25.01.2018 um 16:59:31 Uhr
Goto Top
Oida,

tausend Dank mein lieber!!!
Peppino
Peppino 25.01.2018 um 17:30:22 Uhr
Goto Top
Uhh eine letzte Frage habe ich noch,

kann man anstelle von xlsx -Files auch zusätzlich noch xlsm-Files auswerten?
135321
Lösung 135321 25.01.2018 aktualisiert um 17:35:15 Uhr
Goto Top
Noch nie was von Wildcards gehört?
file = Dir(folder & "\*.xls*") 
Oberstübchen einschalten face-wink
Peppino
Peppino 25.01.2018 um 17:47:04 Uhr
Goto Top
Wird morgen wieder gemacht, versprochen =)

Wenn ich nun das Makro ausführe sollen Dateien die in dem xlsm-File aktualisiert werden..
Kann man das umgehen, dass einfach alles was dort steht auch stumpf raus kopiert wird?
135321
135321 25.01.2018 um 17:51:04 Uhr
Goto Top
Zitat von @Peppino:
Wenn ich nun das Makro ausführe sollen Dateien die in dem xlsm-File aktualisiert werden..
????
Kann man das umgehen, dass einfach alles was dort steht auch stumpf raus kopiert wird?
???
Peppino
Peppino 25.01.2018 um 17:56:03 Uhr
Goto Top
Nochmal ein wenig ausführlicher:

Das Makro fragt dank deiner Wildcard ja jetzt netterweise auch Dateien des Types xlsm ab.
Wenn ich es nun ausführe und die Datei des Types xlsm abgefragt wird, kommt die Meldung dass die Arbeitsmappe externe Verknüpfungen hat (was mir bewusst ist).
Meine Frage nun, ob es möglich ist im Code einen Befehl zu platzieren das diese Meldung nicht aufpoppt.
135321
Lösung 135321 25.01.2018 aktualisiert um 17:59:30 Uhr
Goto Top
Application.DisplayAlerts = False