2016-06-17 13 views
0

Ich muss alle XLSX-Dateien in einem Ordner öffnen und kopieren Sie ihren Inhalt in die Arbeitsmappe, die das Makro ausführt. Ich bin so weit gekommen, dass ich alle Excel-Dateien in einem Ordner dank this Blog-Post mit einer Änderung im Code von bis myExtension = "*.xlsx" durchlaufen konnte. Ich kann jedoch nicht herausfinden, wie Sie den Inhalt von Arbeitsblatt 1 jeder Arbeitsmappe kopieren und in einfügen, auf dem das Makro ausgeführt wird.Schleife durch Excel-Dateien im Ordner und an Makro-Arbeitsmappe

Zum Beispiel in der Do While Schleife, der Code in der Blog-Post oben tut dies:

'Change First Worksheet's Background Fill Blue 
    wb.Worksheets(1).Range("A1:Z1").Interior.Color = RGB(51, 98, 174) 

Aber ich will, so etwas tun:

'Copy all the cells that have data in them and paste/append to VBA workbook 
    wb.Worksheets(1).UsedRange.Copy ' this hasn't been working for me 
    ThisWorkbook.Worksheets(1). (somehow get to the first empty row) . Paste 

Irgendwelche Ideen?

Übrigens, die Excel-Dateien, die ich kopiere, haben alle ihre Daten im ersten Blatt und sie werden keine Kopfzeilen haben.

+0

Bitte geben Sie "das hat für mich nicht gearbeitet"; produziert es einen Fehler oder etwas? – vacip

+0

Schauen Sie sich auch diesen Beitrag an, um zu erfahren, wie Sie die Verwendung von select vermeiden können (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros). Paste für diese Angelegenheit ... – vacip

+0

Und [dies] (http://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba/11169920#11169920) wird Ihnen sagen, wie zu Finde die letzte benutzte Zelle. – vacip

Antwort

0
iRow_Target = 0 
(For Each Workbook in your directory) 
Set Wb = Workbooks.Open(Wb_File_Name) 
For Each Ws in Wb.Sheets 
    For iRow = 1 to Ws.UsedRange.Rows.Count 'This gives you rows count 
     Ws.Rows(iRow).Copy 
     iRow_Target = iRow_Target + 1 'This will have the last row saved 
     Thisworkbook.Sheets("Target").Range("A" & iRow_Target).xlPasteAll 'You can use other xlPaste<options> based on your needs 
    Next 
Next 
0
with thisworkbook.worksheets(1) 
    wb.worksheets(1).usedrange.copy .cells(.rows.count,1).end(xlup).offset(1) 
end with 
+0

Das sieht so aus, als ob es ohne Probleme funktionieren sollte, aber es funktioniert nicht für mich. Beim Debuggen öffnet das Programm die Zieldatei, gelangt an diesen Punkt im Code, und dann wird nie wirklich etwas kopiert. Nicht sicher warum. – BarrettNashville

+0

Aber es funktioniert bei mir. – PaichengWu

Verwandte Themen