2011-01-05 5 views
2

각 Excel 시트에는 3 개의 시트가 포함 된 Excel 파일이 54 개 있으며 각 시트의 데이터 항목은 각각 다르지만 동일한 형식으로되어 있습니다. 해당 시트의 데이터를 VBA를 사용하여 단일 통합 문서로 가져옵니다.많은 Excel 통합 문서 및 시트의 데이터를 단일 통합 문서/테이블로 가져 오기

데이터를 가져 오기 위해 루프를 작성할 수 있도록 프로그램 할 수있는 방법이 있습니까?하지만 각 루프/시트에 대한 각 통합 문서 이름을 작성하지 않아도됩니까? 호출 함수를 사용할 수 있다고 생각하지만 루프 코드를 적용 할 통합 문서 이름과 무관하게 만드는 방법을 모르겠습니다. 거기에 통합 문서의 파일 이름, 예를 들어,와 배열 :

밀리

답변

1

그것은 단지 두 가지 걸리는에게, 사전에 너무 감사

dim books 
books = array("book1.xls","book2.xls",....) 

그런 다음 루프 코드

dim myBk as Workbook 
dim bkFile as string 
For Each bkFile in books 
    myBk = Workbooks.Open(bkFile, ReadOnly) 
    myBk.Activate 
    'Transfer cells from myBk to target workbook 
    target.cells(--).Value = myBk.Sheets("myStuff").Cells(--) 
    ... 
Next 

같은 나는 세부 사항에 당신을 도울 수 없습니다 보인다. 루프를 통과 할 때마다 target.cells 인수를 변경하여 데이터 대상을 이동해야합니다.

3

폴더의 통합 문서를 루프 한 다음 해당 시트를 반복하면됩니다. 약간의 형식 차이에 따라 가져올 때 추가 작업이 필요할 수 있습니다.

Sub ImportWorkbooks(destination as workbook, importFolderPath As String) 

    Dim objFSO As Object 
    Dim objFolder As Object 
    Dim objFile As Object 

    Set objFSO = CreateObject("Scripting.FileSystemObject") 

    'Get the folder object associated with the directory 
    Set objFolder = objFSO.GetFolder(importFolderPath) 

    'Loop through the Files collection and import each workbook 
    For Each objFile In objFolder.Files 
     Dim source As Workbook 
     Set source = Application.Workbooks.Open(objFile.Path, ReadOnly:=True) 
     ImportWorkbook source, destination 
     wb.Close 
     Set wb = Nothing 
    Next 

    Set objFolder = Nothing 
    Set objFile = Nothing 
    Set objFSO = Nothing 

End Sub 

Sub ImportWorkbook(source As Workbook, destination as Workbook) 
    Dim sheet As Worksheet 

    'Import each worksheet 
    For Each sheet In source.Sheets 
     ImportWorksheet sheet, destination 
    Next sheet 
End Sub 

Sub ImportWorksheet(sheet As Worksheet, destination as Workbook) 

    'Perform your import logic for each sheet here (i.e. Copy from sheet and paste into a 
    'sheet into the provided workbook) 

End Sub 

기본 사용법과 같은 것이 될 것이다 현재 통합 문서로 가져 다음

ImportWorkbooks ThisWorkbook, "c:\path\to\folder\containing\workbooks\to\import" 
+0

내가 'ImportWorksheet'의 '시트'인수에 '하는 ByRef 인수 형식이 일치'를 받고있는 것으로 보인다 컴파일 할 때. 왜 어떤 생각? 그럼에도 불구하고 코드는 매우 깨끗 해 보입니다. 감사! – MattV

+2

예, 시트 변수는 특별히 Worksheet 형식으로 초기화해야합니다. VBA가 제공 할 환상적인 오류 메시지 중 하나입니다 :). 이를 반영하도록 코드를 업데이트합니다. – Shaun

관련 문제