0

内部に 5 枚のシートを含む 50 個の Excel ワークブックがあります。それらはすべて同じ構造、同じシート名、同じ列タイトルを持っています。各ファイルから 4 番目のシートを抽出し、1 つのシートワークブックにデータを配置する必要があります。このマクロを見つけましたが、別のシートに抽出されます。このコードを自分のニーズに合わせて変更する方法がわかりません。誰かアドバイスしてもらえますか?

Sub CombineWorkbooks() 
Dim FilesToOpen 
Dim x As Integer 
On Error GoTo ErrHandler 
Application.ScreenUpdating = False 
FilesToOpen = Application.GetOpenFilename _ 
              (FileFilter:="Microsoft Excel Files (*.xlsx), *.xlsx", _ 
               MultiSelect:=True, Title:="Files to Merge") 
If TypeName(FilesToOpen) = "Boolean" Then 
    MsgBox "No file is chosen" 
    GoTo ExitHandler 
End If 
x = 1 
While x <= UBound(FilesToOpen) 
    Workbooks.Open Filename:=FilesToOpen(x) 
    Sheets("Associates report").Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    x = x + 1 
Wend 
ExitHandler: 
    Application.ScreenUpdating = True 
    Exit Sub 
ErrHandler: 
    MsgBox Err.Description 
    Resume ExitHandler 
End Sub code here
4

1 に答える 1

0

特定のフォルダー内のすべてのファイルからデータを収集するためのマクロを次に示します。

ワークブックを 1 シートに

コードの編集が必要な部分は、注意を引くために色付けされています。「これはカスタマイズするセクションです」のコード:

LR = Range("A" & Rows.Count).End(xlUp).Row  'Find last row
Range("A1:A" & LR).EntireRow.Copy .Range("A" & NR)

...シート 4 からコピーするには、次のようにする必要があります。

LR = Sheets("Sheet4").Range("A" & Rows.Count).End(xlUp).Row  'Find last row
Sheets("Sheet4").Range("A1:A" & LR).EntireRow.Copy .Range("A" & NR)

または、上記のサンプル コードを見ると、おそらく次のようになります。

LR = Sheets("Associates Report").Range("A" & Rows.Count).End(xlUp).Row  'Find last row
Sheets("Associates Report").Range("A1:A" & LR).EntireRow.Copy .Range("A" & NR)

これは一般的な出発点として意図されており、環境に合わせて調べて編集する必要があります。コメントを確認してください。

于 2012-08-06T14:31:17.800 に答える