본문 바로가기
WeekdayLife/excel

[엑셀VBA] 시트 복사하기 - 특정 리스트로 갯수, 시트명 설정

by JO_i 2017. 12. 19.

 

 

 

엑셀VBA로 시트 복사하기 - 특정 리스트로 갯수, 시트명 설정

제목만큼이나 난해하다.

 

1, 2, 3번 시트가 있다.

이 중 2번 시트를 여러개 복사하는데,

3번 시트에 있는 리스트의 갯수만큼 복사하고,

이에 해당하는 이름을 붙이고 싶다.

 

 

 

 

[코드샘플]

 

' Null은 없을 것
' 영역이 붙어 있을 것

Sub 시트생성()

    Dim s As Integer
    Dim e As Integer   

    On Error Resume Next
    Application.DisplayAlerts = False

    '시트명으로 사용할 변수 영역 선택
    Set rename_area = Application.InputBox("업체명 위치를 입력하세요", , , , , , , 8)
    Application.DisplayAlerts = True
    Application.ScreenUpdating = False

    '영역 내 변수 영역을 값으로 변환(시트명으로 사용)
    rename = rename_area.Value

    '시트명으로 사용할 리스트 갯수
    e = rename_area.Count

    '시트명으로 사용할 변수의 갯수만큼 특정 시트 복사하기
    For s = 1 To e
        ActiveWorkbook.Sheets("공문").Copy _
        after:=ActiveSheet
    Next s

    '복사된 시트를 포함하여 전체 시트 갯수 세기
    e2 = Worksheets.Count

    '기존에 있었던 시트를 제외하고, 그 다음 시트부터 이름 바꾸기
    '이름은 미리 담아두었던, 변수명으로 사용
    '동일한 이름을 막기 위해, 시트명 뒤에 숫자 넣기

    For i = 4 To e2
        Worksheets(i).Name = rename(i - 31) & i - 3
    Next i

    Application.ScreenUpdating = True

End Sub

 

 

한동안 안쓰니,,

다 까먹는다.