여러 통합 문서의 워크 시트 결합 (Microsoft Excel)
David는 각각에 여러 워크 시트가있는 여러 통합 문서를 가지고 있습니다. 그는 이러한 각 통합 문서의 특정 워크 시트 (하나만)를 새 통합 문서로 결합하려고합니다. 시트 이동 또는 복사를 사용하여 수동으로이 작업을 수행하는 방법을 알고 있지만 특히 이러한 방식으로 “결합”해야하는 통합 문서가 많을 수 있기 때문에 더 자동으로 수행하는 방법을 원합니다.
이 문제에 접근 할 수있는 방법에는 여러 가지가 있으며 모두 매크로 사용과 관련이 있습니다. (이것은 놀라운 일이 아닙니다. 매크로는 지루한 수동 작업을 신속하게 처리하도록 설계되었습니다.)
다음 매크로는 디자인이 간단합니다. 현재 열려있는 모든 통합 문서를 반복하고 각 통합 문서 (매크로가 포함 된 통합 문서 제외)에 대해 해당 통합 문서에서 “Sheet1″이라는 시트를 코드가 포함 된 통합 문서로 복사합니다.
Sub CopySheets1() Dim wkb As Workbook Dim sWksName As String sWksName = "Sheet1" For Each wkb In Workbooks If wkb.Name <> ThisWorkbook.Name Then wkb.Worksheets(sWksName).Copy _ Before:=ThisWorkbook.Sheets(1) End If Next Set wkb = Nothing End Sub
매크로가 Sheet1과 다른 워크 시트를 가져 오도록하려면 원하는 워크 시트 이름을 반영하도록 sWksName 변수의 값을 변경하면됩니다. 워크 시트의 이름이 무엇인지 모르지만 복사 할 워크 시트가 항상 각 통합 문서의 두 번째 워크 시트라는 것을 알고 있다면 매크로에서이 변형을 사용할 수 있습니다.
Sub CopySheets2() Dim wkb As Workbook Dim sWksName As String For Each wkb In Workbooks If wkb.Name <> ThisWorkbook.Name Then wkb.Worksheets(2).Copy _ Before:=ThisWorkbook.Sheets(1) End If Next Set wkb = Nothing End Sub
지금까지 접근 방식의 가장 큰 단점은 모든 통합 문서를 열어야한다는 것입니다. 이것은 항상 가능한 것은 아닙니다. 예를 들어, 한 폴더에 수백 개의 서로 다른 통합 문서가있을 수 있으며 각각의 워크 시트를 결합해야합니다. 100 개의 통합 문서를 여는 것은 기술적으로 가능하지만 대부분의 사람들에게는 실용적이지 않습니다. 이 경우 다른 접근 방식을 취해야합니다.
다음 매크로 CombineSheets는 본질적으로 대화 형입니다. 몇 가지 정보를 요청한 다음 응답을 기반으로 워크 시트를 통합 문서에 추가합니다. 먼저 워크 시트 경로 (후행 슬래시 포함 안 함)를 요청한 다음 통합 문서에 사용할 패턴을 요청합니다. 일반 별표 () 및 물음표 (?) 와일드 카드를 사용하여 통합 문서 패턴을 지정할 수 있습니다. 예를 들어, 패턴은 모든 통합 문서와 일치하고 Budget20 ?? 패턴은 일치합니다.
시작 부분에 “Budget20″이 있고 그 뒤에 두 문자가있는 통합 문서 만 반환합니다.
Sub CombineSheets() Dim sPath As String Dim sFname As String Dim wBk As Workbook Dim wSht As Variant Application.EnableEvents = False Application.ScreenUpdating = False sPath = InputBox("Enter a full path to workbooks") ChDir sPath sFname = InputBox("Enter a filename pattern") sFname = Dir(sPath & "\" & sFname & ".xl*", vbNormal) wSht = InputBox("Enter a worksheet name to copy") Do Until sFname = "" Set wBk = Workbooks.Open(sFname) Windows(sFname).Activate Sheets(wSht).Copy Before:=ThisWorkbook.Sheets(1) wBk.Close False sFname = Dir() Loop ActiveWorkbook.Save Application.EnableEvents = True Application.ScreenUpdating = True End Sub
매크로를 실행할 때 일치하는 각 통합 문서에서 복사 할 워크 시트의 이름도 입력해야합니다. 이름을 제공하고 이러한 워크 시트가 통합 문서에있는 경우 현재 통합 문서의 시작 부분에 복사됩니다.
워크 시트 결합을위한 고유 한 매크로를 작성하지 않으려면 Excel MVP Ron de Bruin이 만든 RDBMerge 추가 기능을 고려할 수 있습니다.
여기에서 무료로 찾을 수 있습니다.
http://www.rondebruin.nl/win/addins/rdbmerge.htm
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (7425)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다.