기존에 이해하기로는 한 시트당 한 파일로 저장하는 걸로 들었는데
그게 아니라 일부 시트들을 한 파일로 저장하는 내용이었다.
array로만 해결하려고 머리 싸매다가 해외 사례에서 의외로 쉽게 해결.
원래 저게 내가 하고 싶던 거였는데 ㅋ
이번 작업의 핵심은 inputbox를 이용하여 시트값을 받은 후 split으로 분리하고
val 함수를 이용하여 string 값을 integer 값으로 변환해주는 것
Sub mkFile() Dim inTemp As String Dim vrTemp As Variant Dim oldBook As Workbook Dim newBook As Workbook Dim i As Integer '처리 속도 높이기 With Application .Calculation = xlCalculationManual .EnableEvents = False .ScreenUpdating = False End With '현재 워크시트 정의 Set oldBook = ActiveWorkbook 'inputbox를 이용하여 저장할 시트번호 받음 inTemp = InputBox("저장할 시트번호를 입력하세요." & vbCr & vbCr & "예) 1,2,3") If TypeName(inTemp) = "Boolean" Or inTemp = "" Then Exit Sub '콤마를 기준으로 받은 값 분리 vrTemp = Split(inTemp, ",") '시트번호를 받아 새파일로 저장 For i = 1 To UBound(vrTemp) + 1 If i = 1 Then Sheets(Val(vrTemp(i - 1))).Copy Set newBook = ActiveWorkbook ActiveSheet.Buttons.Delete oldBook.Activate Else Sheets(Val(vrTemp(i - 1))).Copy after:=newBook.Sheets(i - 1) ActiveSheet.Buttons.Delete oldBook.Activate End If Next i '처리속도 복구 후 새파일 선택 With Application .Calculation = xlCalculationAutomatic .EnableEvents = True .ScreenUpdating = True End With newBook.Activate Sheets(1).Select End Sub cs
'VB(A)' 카테고리의 다른 글
VBA 첫 알바 (0) | 2015.03.01 |
---|---|
폴더 선택하여 텍스트파일 한줄로 가져오기 (0) | 2015.02.25 |
이름을 자음 모음으로 분리하기 (0) | 2015.02.22 |
시트별로 파일 저장 (0) | 2015.02.21 |
Collection 객체를 활용하여 중복값 찾기 (0) | 2015.02.19 |