VBA를 사용하여 폴더에 저장된 다른 통합 문서에서 특정 열을 추출하는 방법은 무엇입니까?

VBA를 사용하여 폴더에 저장된 다른 통합 문서에서 특정 열을 추출하는 방법은 무엇입니까?

통합 문서가 있고 각 통합 문서에 단일 워크시트가 포함되어 있고 모든 워크시트에 동일한 수의 행과 열이 있다고 가정합니다. 각 워크시트에서 ..열 이름 "May 10-11"을 추출하고 싶습니다. 이 열 이름은 각 워크시트에 공통됩니다. 동일한 폴더에 저장된 각 통합 문서에서 "5월 10-11일" 열을 어떻게 추출할 수 있습니까?

예를 들어 : 데이터 매트릭스. 이 이미지는 단지 데이터 샘플일 뿐입니다

각 워크시트에는 동일한 수의 행과 열이 포함되어 있습니다. 행 = 453 및 열 = 55 ..이 샘플 이미지에서 동일한 폴더에 저장되고 다른 워크시트에 저장된 모든 통합 문서에서 "may 10-11" 열을 추출하고 싶습니다.

답변1

이것이 당신이 원하는 것입니까? 출처는https://msdn.microsoft.com/en-us/library/office/gg549168(v=office.14).aspx

Sub MergeAllWorkbooks()
    Dim SummarySheet As Worksheet
    Dim FolderPath As String
    Dim NRow As Long
    Dim FileName As String
    Dim WorkBk As Workbook
    Dim SourceRange As Range
    Dim DestRange As Range

    ' Create a new workbook and set a variable to the first sheet. 
    Set SummarySheet = Workbooks.Add(xlWBATWorksheet).Worksheets(1)

    ' Modify this folder path to point to the files you want to use.
    FolderPath = "C:\Users\Peter\invoices\"

    ' NRow keeps track of where to insert new rows in the destination workbook.
    NRow = 1

    ' Call Dir the first time, pointing it to all Excel files in the folder path.
    FileName = Dir(FolderPath & "*.xl*")

    ' Loop until Dir returns an empty string.
    Do While FileName <> ""
        ' Open a workbook in the folder
        Set WorkBk = Workbooks.Open(FolderPath & FileName)

        ' Set the cell in column A to be the file name.
        SummarySheet.Range("A" & NRow).Value = FileName

        ' Set the source range to be A9 through C9.
        ' Modify this range for your workbooks. 
        ' It can span multiple rows.
        Set SourceRange = WorkBk.Worksheets(1).Range("A9:C9")

        ' Set the destination range to start at column B and 
        ' be the same size as the source range.
        Set DestRange = SummarySheet.Range("B" & NRow)
        Set DestRange = DestRange.Resize(SourceRange.Rows.Count, _
           SourceRange.Columns.Count)

        ' Copy over the values from the source to the destination.
        DestRange.Value = SourceRange.Value

        ' Increase NRow so that we know where to copy data next.
        NRow = NRow + DestRange.Rows.Count

        ' Close the source workbook without saving changes.
        WorkBk.Close savechanges:=False

        ' Use Dir to get the next file name.
        FileName = Dir()
    Loop

    ' Call AutoFit on the destination sheet so that all 
    ' data is readable.
    SummarySheet.Columns.AutoFit
End Sub

관련 정보