라벨이 VBA인 게시물 표시

[VBA]특정문자를 포함한 시트만 선택하여 저장

'지식인에서 엑셀 관련 질문에 답변을 해주다가 VBA공부를 시작했다. 다음은 어느 분이 '연도-월'의 이름을 가진 시트가 많이 있는 파일에서, 연도별로 시트를 저장하고, 올해 1월과 작년 12월, 그리고 연도가 아닌 글자로 시트명이 된 시트들을 따로 모아 저장해달라는 의뢰(?)에 대한 연구 결과이다 파일로 다운 받기 Option Explicit                         '변수를 선언해야 사용할 수 있다는 옵션 Sub MergeWBs()                   '매크로 이름 Dim i As Integer                '순환문 작업에 필요한 변수 Dim shtnum As Integer           '시트의 총갯수를 저장하기위한 변수 Dim sh As Worksheet              '선택한 시트를 복사할 때 시트 각각에 배당하는 변수 Dim shs As Sheets                 '선택한 시트 전체에 배당하는 변수 Dim wkbtg As Workbook              '새로 만드는 엑셀파일에 배당하는 병수 Dim MyPath As String                       '저장위치 Dim strThisYr As String                        '올해 연도를 담을 변수 Dim strOldYr As String                           '이전 연도를 담을 변수 Dim strshname As String                     '시트명을 담을 변수 Application.DisplayAlerts = False          '실행속도를 빠르게하기 위해 경고,이벤트 등을 꺼둔다 Application.EnableEvents = False Application.ScreenUpdating =

한 폴더 안의 모든 파일에서 특정 시트 복사해오는 vba

네이버 지식인에서    큰형(ks_1862)님의 답변 중 참고하였습니다. D:\TEMP 라는 폴더 안에 있는 모든 XLSX 확장자를 가진 엑셀파일에서 "통계"라는 이름을 가진 시트를 복사해옵니다. Option Explicit Sub MergeWBs() Dim wbDst As Workbook Dim wbSrc As Workbook Dim wsSrc As Worksheet Dim MyPath As String Dim strFilename As String Application.DisplayAlerts = False Application.EnableEvents = False Application.ScreenUpdating = False MyPath = "D:\temp" Set wbDst = ThisWorkbook strFilename = Dir(MyPath & "\*.xlsx", vbNormal) If Len(strFilename) = 0 Then Exit Sub Do Until strFilename = "" Set wbSrc = Workbooks.Open(Filename:=MyPath & "\" & strFilename) Set wsSrc = wbSrc.Worksheets("통계") wsSrc.Copy after:=wbDst.Worksheets(wbDst.Worksheets.Count) wbSrc.Close False strFilename = Dir() Loop wbDst.Worksheets(1).Delete Application.DisplayAlerts = True Application.EnableEvents = True Application.ScreenUpdating = True End Sub 2017.2.16 몇가지 기능을 추가한 버전입니다 1. '통계&