2016-06-17 3 views
0

Мне нужно открыть все файлы .xlsx в папке и скопировать их содержимое в книгу, в которой выполняется макрос. Я до сих пор могу пропустить все файлы Excel в папке благодаря сообщению this, с одним изменением кода от myExtension = "*.xls" до myExtension = "*.xlsx". Однако я не могу понять, как скопировать все содержимое листа 1 каждой книги и вставить его в ThisWorkbook, который является тем, у которого выполняется макрос.Цикл через файлы Excel в папке и в приложении к Macro Workbook

Например, в цикле Do While, код в блоге выше делает это:

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

Но я хочу сделать что-то вроде этого:

'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 

Любые идеи?

Кстати, файлы Excel, которые я копирую, будут иметь свои данные на первом листе, и у них не будет никаких строк заголовков.

+0

Пожалуйста, укажите "это не работает для меня"; это порождает ошибку или что-то еще? – vacip

+0

Кроме того, ознакомьтесь с этим постом, чтобы [научиться избегать использования select] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros) паста в этом отношении ... – vacip

+0

И [это] (http://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-vba/11169920#11169920) расскажет вам, как найдите последнюю использованную ячейку. – vacip

ответ

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

Похоже, он должен работать без проблем, но он не работает для меня. При отладке программа открывает целевой файл, добирается до этой точки кода, а затем ничего не копируется. Не знаю, почему. – BarrettNashville

+0

Но это работает на меня. – PaichengWu