Note: The other languages of the website are Google-translated. Back to English

디렉터리의 파일을 반복하고 Excel의 마스터 시트에 데이터를 복사하는 방법은 무엇입니까?

폴더에 여러 Excel 통합 문서가 있고 이러한 모든 Excel 파일을 반복하고 지정된 범위의 동일한 이름 워크 시트에서 Excel의 마스터 워크 시트로 데이터를 복사하려는 경우 어떻게 할 수 있습니까? 이 기사에서는이를 달성하는 방법을 자세히 소개합니다.

디렉토리의 파일을 반복하고 VBA 코드를 사용하여 데이터를 마스터 시트에 복사


디렉토리의 파일을 반복하고 VBA 코드를 사용하여 데이터를 마스터 시트에 복사

특정 폴더의 모든 통합 문서 시트 1에서 A4 : D1 범위의 지정된 데이터를 마스터 시트로 복사하려면 다음과 같이하십시오.

1. 워크 북에서 마스터 워크 시트를 생성하고 다른 + F11 키를 눌러 응용 프로그램 용 Microsoft Visual Basic 창.

2. 에서 응용 프로그램 용 Microsoft Visual Basic 창을 클릭합니다 끼워 넣다 > 모듈. 그런 다음 VBA 코드 아래를 코드 창에 복사하십시오.

VBA 코드 : 폴더의 파일을 반복하고 데이터를 마스터 시트로 복사

Sub Merge2MultiSheets()
    Dim xRg As Range
    Dim xSelItem As Variant
    Dim xFileDlg As FileDialog
    Dim xFileName, xSheetName, xRgStr As String
    Dim xBook, xWorkBook As Workbook
    Dim xSheet As Worksheet
    On Error Resume Next
    Application.DisplayAlerts = False
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    xSheetName = "Sheet1"
    xRgStr = "A1:D4"
    Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
    With xFileDlg
        If .Show = -1 Then
            xSelItem = .SelectedItems.Item(1)
            Set xWorkBook = ThisWorkbook
            Set xSheet = xWorkBook.Sheets("New Sheet")
            If xSheet Is Nothing Then
                xWorkBook.Sheets.Add(after:=xWorkBook.Worksheets(xWorkBook.Worksheets.Count)).Name = "New Sheet"
                Set xSheet = xWorkBook.Sheets("New Sheet")
            End If
            xFileName = Dir(xSelItem & "\*.xlsx", vbNormal)
            If xFileName = "" Then Exit Sub
            Do Until xFileName = ""
               Set xBook = Workbooks.Open(xSelItem & "\" & xFileName)
                Set xRg = xBook.Worksheets(xSheetName).Range(xRgStr)
                xRg.Copy xSheet.Range("A65536").End(xlUp).Offset(1, 0)
                xFileName = Dir()
                xBook.Close
            Loop
        End If
    End With
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub

주의 사항:

1). 코드에서“A1 : D4"및"Sheet1”는 모든 Sheet1의 A4 : D1 범위에있는 데이터가 마스터 시트에 복사됨을 의미합니다. 그리고“새 시트”는 새로 생성 된 마스터 시트의 이름입니다.
2). 특정 폴더의 Excel 파일은 열리지 않아야합니다.

3. 누르세요 F5 코드를 실행하는 키입니다.

4. 오프닝에서 검색 창에서 반복 할 파일이 포함 된 폴더를 선택한 다음 OK 단추. 스크린 샷보기 :

그런 다음 현재 통합 문서의 끝에 "새 시트"라는 마스터 워크 시트가 생성됩니다. 그리고 선택한 폴더에있는 모든 Sheet1의 A4 : D1 범위에있는 데이터가 워크 시트 안에 나열됩니다.


관련 기사 :


최고의 사무 생산성 도구

Excel용 Kutools는 대부분의 문제를 해결하고 생산성을 80% 증가시킵니다.

  • 재사용: 빠르게 삽입 복잡한 공식, 차트 그리고 이전에 사용한 모든 것; 셀 암호화 암호로; 메일 링리스트 생성 이메일 보내기 ...
  • 슈퍼 포뮬러 바 (여러 줄의 텍스트와 수식을 쉽게 편집 할 수 있습니다.) 레이아웃 읽기 (많은 수의 셀을 쉽게 읽고 편집합니다.) 필터링 된 범위에 붙여 넣기...
  • 셀 / 행 / 열 병합 데이터 손실없이; 셀 내용 분할; 중복 행 / 열 결합... 중복 셀 방지; 범위 비교...
  • 중복 또는 고유 선택 행; 빈 행 선택 (모든 셀이 비어 있음); 슈퍼 찾기 및 퍼지 찾기 많은 통합 문서에서; 무작위 선택 ...
  • 정확한 사본 수식 참조를 변경하지 않고 여러 셀; 참조 자동 생성 여러 시트에; 글 머리 기호 삽입, 확인란 등 ...
  • 텍스트 추출, 텍스트 추가, 위치 별 제거, 공간 제거; 페이징 부분합을 만들고 인쇄합니다. 셀 내용과 주석 간 변환...
  • 슈퍼 필터 (다른 시트에 필터 구성표 저장 및 적용) 고급 정렬 월 / 주 / 일, 빈도 등 특수 필터 굵은 기울임 꼴로 ...
  • 통합 문서와 워크 시트 결합; 키 열을 기반으로 테이블 병합; 데이터를 여러 시트로 분할; xls, xlsx 및 PDF 일괄 변환...
  • 300개 이상의 강력한 기능. Office / Excel 2007-2021 및 365를 지원합니다. 모든 언어를 지원합니다. 기업 또는 조직에서 쉽게 배포할 수 있습니다. 전체 기능은 30일 무료 평가판입니다. 60일 환불 보장.
kte 탭 201905

Office Tab은 Office에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만듭니다.

  • Word, Excel, PowerPoint에서 탭 편집 및 읽기 사용, Publisher, Access, Visio 및 Project.
  • 새 창이 아닌 동일한 창의 새 탭에서 여러 문서를 열고 만듭니다.
  • 생산성을 50% 높이고 매일 수백 번의 마우스 클릭을 줄입니다!
officetab 하단
코멘트 (20)
아직 평가가 없습니다. 가장 먼저 평가하세요!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
vba 코드 감사합니다! 그것은 완벽하게 작동합니다! 대신 PASTE AS VALUE가 필요한 경우 코드가 무엇인지 알고 싶습니까? 미리 톡!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 라이링입니다.
다음 코드는 문제를 해결하는 데 도움이 될 수 있습니다. 당신의 의견에 감사드립니다.

하위 Merge2MultiSheets()
범위로 Dim xRg
Dim xSelItem을 변형으로
Dim xFileDlg As FileDialog
Dim xFileName, xSheetName, xRgStr을 문자열로
Dim xBook, xWorkBook을 통합 문서로
xSheet를 워크시트로 희미하게 만들기
오류에 대한 다음 재개
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.ScreenUpdating = False
xSheetName = "시트 1"
xRgStr = "A1:D4"
xFileDlg 설정 = Application.FileDialog(msoFileDialogFolderPicker)
xFileDlg 사용
.Show = -1이면
xSelItem = .SelectedItems.Item(1)
xWorkBook = ThisWorkbook 설정
xSheet = xWorkBook.Sheets("새 시트") 설정
xSheet가 아무것도 아닌 경우
xWorkBook.Sheets.Add(after:=xWorkBook.Worksheets(xWorkBook.Worksheets.count)).Name = "새 시트"
xSheet = xWorkBook.Sheets("새 시트") 설정
END IF
xFileName = Dir(xSelItem & "\*.xlsx", vbNormal)
xFileName = ""이면 Sub 종료
xFileName = ""까지 수행
xBook 설정 = Workbooks.Open(xSelItem & "\" & xFileName)
xRg = xBook.Worksheets(xSheetName).Range(xRgStr) 설정
xRg.Copy xSheet.Range("A65536").End(xlUp).Offset(1, 0)
xFileName = 디렉터리()
xBook.닫기
고리
END IF

xRg = xSheet.UsedRange 설정
xRg.ClearFormats
xRg.UseStandardHeight = True
xRg.UseStandardWidth = 참
Application.DisplayAlerts = 참
Application.EnableEvents = True
Application.ScreenUpdating = True
최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요, 코드 주셔서 감사합니다. 데이터 범위가 복사된 Excel 파일 이름을 포함하는 방법을 알려주시겠습니까? 이것은 큰 도움이 될 것입니다!

고맙습니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요

튜토리얼 주셔서 감사합니다.

방법: "전체" 행의 값이 있는 "시트1"의 행만 복사하고 "새 시트"라는 마스터 워크시트에 [파일 이름]으로 붙여넣습니다. 합계가 있는 행은 각 워크시트에서 다를 수 있습니다.

예 :
파일1: 시트1
Col1, Col2, Colx
1,2,15
결과,10,50

파일2: 시트1
Col1, Col2, Colx
1,5,10
2,4,16
3,3,6
4,5,6
5,7,10
결과,300,500

마스터 파일: "새 시트":
파일1, 10, 50
파일2, 300, 500
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요, 이것은 잘 작동합니다. 수식이 아닌 값만 가져오도록 변경하는 방법이 있습니까?
감사!!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 Trish,
다음 코드는 문제를 해결하는 데 도움이 될 수 있습니다. 당신의 의견에 감사드립니다.

하위 Merge2MultiSheets()
범위로 Dim xRg
Dim xSelItem을 변형으로
Dim xFileDlg As FileDialog
Dim xFileName, xSheetName, xRgStr을 문자열로
Dim xBook, xWorkBook을 통합 문서로
xSheet를 워크시트로 희미하게 만들기
오류에 대한 다음 재개
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.ScreenUpdating = False
xSheetName = "시트 1"
xRgStr = "A1:D4"
xFileDlg 설정 = Application.FileDialog(msoFileDialogFolderPicker)
xFileDlg 사용
.Show = -1이면
xSelItem = .SelectedItems.Item(1)
xWorkBook = ThisWorkbook 설정
xSheet = xWorkBook.Sheets("새 시트") 설정
xSheet가 아무것도 아닌 경우
xWorkBook.Sheets.Add(after:=xWorkBook.Worksheets(xWorkBook.Worksheets.count)).Name = "새 시트"
xSheet = xWorkBook.Sheets("새 시트") 설정
END IF
xFileName = Dir(xSelItem & "\*.xlsx", vbNormal)
xFileName = ""이면 Sub 종료
xFileName = ""까지 수행
xBook 설정 = Workbooks.Open(xSelItem & "\" & xFileName)
xRg = xBook.Worksheets(xSheetName).Range(xRgStr) 설정
xRg.Copy xSheet.Range("A65536").End(xlUp).Offset(1, 0)
xFileName = 디렉터리()
xBook.닫기
고리
END IF

xRg = xSheet.UsedRange 설정
xRg.ClearFormats
xRg.UseStandardHeight = True
xRg.UseStandardWidth = 참
Application.DisplayAlerts = 참
Application.EnableEvents = True
Application.ScreenUpdating = True
최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요, 여전히 값이 아닌 수식을 가져오고 있으므로 #REF 오류가 발생합니다. 어딘가에 .PasteSpecial xlPasteValues가 필요할 수 있다는 것을 알고 있지만 어디 있는지 알 수 없습니다. 도울 수 있니? 감사해요!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요. 감사합니다.


모든 폴더와 하위 폴더를 반복하고 위의 복사를 수행하는 코드를 어떻게 포함합니까?


감사합니다!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕 - 이 코드는 내가 달성하려는 것에 완벽합니다.

모든 폴더와 하위 폴더를 반복하고 복사를 수행하는 방법이 있습니까?


감사합니다!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
Hi - 이 코드는 모든 파일의 처음 565줄에 대해 매우 잘 작동하지만 그 이후의 모든 줄은 다음 파일과 겹칩니다.
이것을 고칠 방법이 있습니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
감사합니다. 통합 문서 내의 각 워크시트에서 기본 마스터 파일 내의 별도 시트로 복사하여 붙여넣는 방법(특수 값)은 무엇입니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
셀이 비어 있는 경우 코드를 공백으로 두는 방법은 무엇입니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
나를 위해 "Sheet1" 탭 이름은 각 파일에 대해 변경됩니다. 예를 들어, Tab1, Tab2, Tab3, Tab4... Excel에서 목록을 실행하도록 루프를 설정하고 모든 항목을 실행할 때까지 "Sheet1" 이름을 계속 변경하려면 어떻게 해야 합니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 Nick, 아래 VBA 코드는 문제를 해결하는 데 도움이 될 수 있습니다. 시도해 주세요. 하위 LoopThroughFileRename()
'Extendofice 2021/12/31 업데이트
범위로 Dim xRg
Dim xSelItem을 변형으로
Dim xFileDlg As FileDialog
Dim xFileName, xSheetName, xRgStr을 문자열로
Dim xBook, xWorkBook을 통합 문서로
xSheet를 워크시트로 희미하게 만들기
xShs를 시트로 흐리게 처리
Dim xName을 문자열로
Dim xFNum을 정수로
오류에 대한 다음 재개
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.ScreenUpdating = False
xFileDlg 설정 = Application.FileDialog(msoFileDialogFolderPicker)
xFileDlg.Show
xSelItem = xFileDlg.SelectedItems.Item(1)
xFileName = Dir(xSelItem & "\*.xlsx", vbNormal)
xFileName <> "" 동안 수행
xWorkBook 설정 = Workbooks.Open(xSelItem & "\" & xFileName)
xShs = xWorkBook.Sheets 설정
xFNum의 경우 = 1에서 xShs.Count까지
xSheet = xShs.Item(xFNum) 설정
xName = xSheet.이름
x이름 = 바꾸기(x이름, "시트""") '시트를 탭으로 교체
xSheet.이름 = x이름
다음
xWorkBook.저장
xWorkBook.닫기
xFileName = 디렉터리()
고리
Application.DisplayAlerts = 참
Application.EnableEvents = True
Application.ScreenUpdating = True
최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 저는 시트가 포함된 6개의 다른 통합 문서(폴더 내)의 데이터를 NEW WORKBOOK에 복사하는 코드를 원합니다. VBA에서
제발 도와주세요 ASP
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 파라누샤님.
다음 문서의 VBA 스크립트는 여러 통합 문서 또는 지정된 통합 문서 시트를 마스터 통합 문서로 결합할 수 있습니다. 도움이 되는지 확인해주세요.
Excel에서 여러 통합 문서를 하나의 마스터 통합 문서로 결합하는 방법은 무엇입니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
올라 봄 디아.
Gostei muito dessde codigo, mas não me ajudou com os relatórios que eu preciso impreimir.
Preciso imprimir 2.400 관계형 파스타 및 파스타와 다른 종류의 구성 요소는 인상에 맞게 구성할 수 있습니다. VBA 자동화를 위한 환경 개선 ? Me ajudaria muito, obrigada.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕 마리아 소아레스,
다음 게시물의 VBA 코드가 도움이 될 수 있는지 확인하십시오.
Excel에서 여러 통합 문서를 인쇄하는 방법은 무엇입니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
내 시나리오는 비슷하지만 각 파일에 여러 시트가 있고 이름은 다르지만 파일 간에는 일관성이 있습니다. 이 코드를 반복하여 파일 내의 데이터를 복사하고 마스터 통합 문서의 특정 시트 이름에 붙여넣기(값)하는 방법이 있습니까? 마스터의 시트 이름은 파일과 동일합니다. 나는 그것들을 반복하고 싶다. 또한 각 시트의 데이터 양은 다양하므로 다음과 같이 각 시트의 데이터를 선택해야 합니다.

범위 ( "A1"). 선택
범위 (Selection, Selection.End (xlDown)). 선택
범위(선택, 선택.끝(xlToRight)).선택


파일 시트 이름은 기부, 서비스, 보험, 자동차, 기타 비용 등입니다.

사전에 감사합니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 앤드류 샤한,
다음 VBA 코드는 문제를 해결할 수 있습니다. 코드를 실행하고 폴더를 선택하면 코드가 자동으로 이름별로 워크시트를 일치시키고 데이터를 마스터 통합 문서의 동일한 이름의 워크시트에 붙여넣습니다.
Sub Merge2MultiSheets()
'Updated by Extendoffice 20221209
    Dim xRg As Range
    Dim xSelItem As Variant
    Dim xFileDlg As FileDialog
    Dim xFileName, xSheetName, xRgStr As String
    Dim xBook As Workbook, xMainBook As Workbook
    Dim xSheet As Worksheet
    On Error Resume Next
    
    Application.DisplayAlerts = False
    Application.EnableEvents = False
    Application.ScreenUpdating = False

    Set xMainBook = ThisWorkbook
    
    Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
    With xFileDlg
        If .Show = -1 Then
            xSelItem = .SelectedItems.Item(1)
            xFileName = Dir(xSelItem & "\*.xlsx", vbNormal)
            If xFileName = "" Then Exit Sub
            
            Do Until xFileName = ""
            Set xBook = Workbooks.Open(xSelItem & "\" & xFileName)

            For Start = 1 To xBook.Worksheets.Count
                Set xSheet = xBook.Worksheets.Item(Start)
                xSheet.Activate
                xSheetName = xSheet.Name
                xSheet.UsedRange.Copy (xMainBook.Worksheets.Item(xSheetName).Range("A1048576").End(xlUp).Offset(1, 0))
            Next
                xFileName = Dir()
                xBook.Close
            Loop
        End If
    End With
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    Application.ScreenUpdating = True
End Sub
아직 코멘트가 없습니다

Follow Us

저작권 © 2009 - WWW.extendoffice.com. | 판권 소유. 에 의해 구동 ExtendOffice. | | 사이트 맵
Microsoft 및 Office 로고는 미국 및 / 또는 기타 국가에서 Microsoft Corporation의 상표 또는 등록 상표입니다.
Sectigo SSL로 보호