여러 통합 문서 및 시트의 데이터를 VBA에서 하나의 새 Excel 파일로 컴파일하고 조합하는 방법

여러 통합 문서 및 시트의 데이터를 VBA에서 하나의 새 Excel 파일로 컴파일하고 조합하는 방법

여러 통합 문서의 데이터를 하나의 Excel 시트로 컴파일하고 대조하려고 합니다. 두 통합 문서인 Secondtest1과 Secondtest2에서 A1:D1의 데이터를 ThisWorkbook으로 가져오려고 합니다. 지금까지 내 코드는 다음과 같습니다.

Sub collateData()

    Dim SourceArray
    Dim SheetName As String, SourceRange As String
    Dim TargetWorkbook As Workbook, sourceFile As Workbook
    Dim TargetSheet As Worksheet
    Dim i As Integer
    Dim LastRow As Long

    SourceArray = Array("H:\Secondtest1.xlsx", "H:\Secondtest2.xlsx")
    SheetName = "Sheet1"
    SourceRange = "A1:D1"
    Set TargetWorkbook = ThisWorkbook
    Set TargetSheet = TargetWorkbook.Sheets("Sheet1")
    For i = 0 To UBound(SourceArray)
        Set sourceFile = Workbooks.Open(SourceArray(i))
        **LastRow = TargetSheet.Cells(TargetSheet.Rows.Count, 1).End(x1Up).Row**
        With sourceFile
            .Sheets(SheetName).Range(SourceRange).Copy Destination:=TargetSheet.Range("A" & i & ":D" & i)

            .Close
        End With
    Next

End Sub

오류가 발생하는 줄에 별표를 표시했습니다. 내가 받고 있는 오류는 "응용 프로그램 정의 또는 개체 정의 오류"입니다. 도움을 주시면 감사하겠습니다. 감사합니다.

답변1

xlUp(숫자 '1'이 아닌 소문자 'L'이어야 함) 이어야 합니다 .

편집하다

몇 가지 사항:

  • Option Explicit프로덕션 환경이 아니더라도 항상 모듈 상단에서 사용하세요 . 이렇게 하면 코드에서 오류가 즉시 지적되었을 것입니다.
  • 하나의 명명 규칙을 선택하고 이를 일관되게 따릅니다(대부분 대문자로 된 단어를 사용하지만 하나의 변수를 로 선언했습니다 sourceFile).
  • 어떤 사람들은 변수에 사용되는 것과 다른 규칙을 사용하여 명명 절차를 선호할 수도 있습니다(그것은 귀하에게 달려 있습니다).
  • 추가로 수정할 의도 없이 입력 통합 문서를 여는 경우 다음과 같이 ReadOnly인수를 사용하는 것이 더 좋으며 아마도 UpdateLinks인수도 사용하는 것이 좋습니다.

    Workbooks.Open(SourceArray(i), ReadOnly:=False, UpdateLinks:=False)
    

    False에 전달하면 UpdateLinks업데이트 링크 대화 상자가 표시되지 않습니다.

  • 값이 변수 범위 내에 있다고 확신하는 경우에도 Long대신을 사용하세요 . 최신 버전의 VBA에서는 데이터 유형이 더 효율적으로 만들어졌다는 내용을 어딘가에서 읽었습니다 .IntegerIntegerLong

관련 정보