도쿄사는 외노자

VBA 복사 붙여넣기를 통한 여러 워크시트 내용 통합 본문

Tech/VBA

VBA 복사 붙여넣기를 통한 여러 워크시트 내용 통합

Enrai 2020. 1. 14. 21:32

VBA 지정 폴더 내의 파일 Loop와 연계

'특정 리스트로부터 데이터 취득
Sub SumKnowledgeListFile(FileName, index)
    
    '통합작업용 시트명
    Dim shtWork As String
    shtWork = "Work"

    '데이터 시트명
    Dim shtData As String
    shtData = "데이터"
    
    Dim ingFile As Workbook
    Dim ingSheet As Worksheet
    Dim SumSheet As Worksheet
    
    Dim iRow As Integer
    Dim endCol As Integer
    Dim endRow As Integer
    
    '파라메터로 받은 Path로 데이터 파일 열기
    Set ingFile = Workbooks.Open(FileName:=FileName, ReadOnly:=True)

    '데이터 파일의 데이터 시트를 활성화
    ingFile.Sheets(shtData).Activate
    
    '현재 워크북의 통합작업용 워크시트를 SumSheet로 설정
    Set SumSheet = ThisWorkbook.Sheets(shtWork)
    
    '통합작업용 시트에 존재하는 데이터의 다음 줄부터 붙여넣도록 설정
    '다만, 데이터가 존재하지 않는 경우는 0건이므로, 다음 줄부터 붙여넣을 필요 없음
    If index = 1 Then
       iRow = SumSheet.Range("A1").CurrentRegion.Rows.Count
    Else
       iRow = SumSheet.Range("A1").CurrentRegion.Rows.Count + 1
    End If

    '데이터 시트의 최종 Row, Col 취득
    endRow = ingFile.Sheets(shtData).Cells(Sheets(shtData).Rows.Count, 5).End(xlUp).Row
    endCol = ingFile.Sheets(shtData).Cells(4, Sheets(shtData).Columns.Count).End(xlToLeft).Column
        
    '데이터 시트의 내용을 B5부터 마지막까지 복사
    With ingFile.Sheets(shtData)
        .Range(Cells(5, 2), Cells(endRow, endCol)).Copy
    End With
    
    '복사한 내용을 통합작업용 워크시트의 마지막 Row에 이어서 붙여넣기
    SumSheet.Cells(iRow, 1).PasteSpecial Paste:=xlPasteValues
    
	'클립보드 복사 확인 메시지가 나오지 않도록 설정
    ingFile.Application.CutCopyMode = False
    
    '데이터 파일 종료
    ingFile.Close
    
End Function

'Tech > VBA' 카테고리의 다른 글

VBA 셀에 문자열 설정  (0) 2020.01.15
VBA 셀 내의 강제개행코드(Shift + Enter) 삭제  (0) 2020.01.15
VBA 지정 폴더 내의 파일 Loop  (0) 2020.01.14
VBA 중복행 삭제  (0) 2020.01.14
VBA 워크시트 초기화  (0) 2020.01.14