2016-06-17 7 views
0

フォルダ内のすべての.xlsxファイルを開き、その内容をマクロを実行しているブックにコピーする必要があります。私は、thisブログの投稿のおかげで、フォルダ内のすべてのExcelファイルをループすることができるようになりました。コードの変更が​​からmyExtension = "*.xlsx"に変更されました。しかし、私はどのように各ワークブックのワークシート1のすべての内容をコピーし、それをマクロを実行しているThisWorkbookに貼り付けるかを理解できません。フォルダ内のExcelファイルをループしてマクロブックに追加

例えば、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

また、この記事で[選択の使用を避ける方法を学ぶ](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)とcopy-その問題のために貼り付けてください。 – 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

関連する問題