나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내
작성자:  

 dew (dewdrop)

추천:  2
파일:     합계파일_Ans.xlsm (28.4KB) 조회:  1573
제목:   [RE]파일 불러서 SHEET합치기
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007):

* 아래줄에 질문을 작성하세요 >>

어떤 파일안에 있는 SHEET들을 불러서 다른파일에서 합치는 VBA가 궁금해요
==============[유아님 글에 대한 답변입니다]==============
첨부 파일 참고하세요...

Sub MergeData()
    Dim vItem, vX
    Dim wbkSel As Workbook
    Dim shtX As Worksheet, rUsed As Range
    Dim shtTg As Worksheet
    Dim bFirst As Boolean: bFirst = True
    
    Application.DisplayAlerts = False
    
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "합치려는 원본 파일을 선택"
        .InitialFileName = ThisWorkbook.Path & Application.PathSeparator    '초기 폴더 위치 설정
        .AllowMultiSelect = True
        .Show
        
        If .SelectedItems.Count > 0 Then
            Set vItem = .SelectedItems
        Else
            MsgBox "선택한 파일이 없습니다.", vbInformation
            GoTo Exit_Sub
        End If
    End With

    Set shtTg = Worksheets.Add(After:=ActiveSheet)  '새 시트에 합치기 결과을 모음
    
    For Each vX In vItem
        Set wbkSel = Workbooks.Open(vX, ReadOnly:=True)
        For Each shtX In wbkSel.Worksheets
            Set rUsed = shtX.Range("A3").CurrentRegion
            If bFirst Then
                Set rUsed = rUsed.Resize(rUsed.Rows.Count - 1)  '합계행을 제외하기 위함
                rUsed.Copy shtTg.[A1]
                bFirst = False
            Else
                Set rUsed = rUsed.Offset(1).Resize(rUsed.Rows.Count - 2) '필드행과 합계행을 제외함
                rUsed.Copy shtTg.Cells(Rows.Count, 1).End(xlUp).Offset(1)
            End If
        Next
        wbkSel.Close True
    Next
    
    
    Set rUsed = shtTg.[A1].CurrentRegion
    Set rUsed = rUsed.Offset(1).Resize(rUsed.Rows.Count - 1)
    With rUsed.Columns(1)
        .ClearContents
        .Cells(1) = 1
        .DataSeries xlColumns, xlLinear
    End With
    
    With shtTg.Cells(rUsed.Rows(rUsed.Rows.Count).Row + 1, 1)
        rUsed.Rows(rUsed.Rows.Count).Copy
        .Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
        Application.CutCopyMode = False
        .Cells(1, 1) = "합"
        .Cells(1, 4) = "=Sum(" & rUsed.Columns(4).Address & ")"
        .Select
    End With
    
Exit_Sub:
    Application.DisplayAlerts = True
End Sub
 
[불량 게시물 신고]  
        
  

작성일 : 2018-11-19(10:14)
최종수정일 : 2018-11-19(10:14)
 


 ◎ 관련글

  제 목   작성자   날짜
파일 불러서 SHEET합치기 유아 2018-11-18
[RE]파일 불러서 SHEET합치기 dew 2018-11-19
[RE] 특정 sheet만 가져오게 해주세요. 유아 2018-11-19