엑셀 VBA에서 Name 속성은 워크시트의 이름을 가져오거나 변경하는 데 사용됩니다.
즉, 워크시트의 이름을 확인하거나 변경할 때 유용합니다.
1. 기본 문법
워크시트개체.Name = "새로운이름"
|
- 워크시트개체 → Sheets(1), Worksheets("Sheet1"), ActiveSheet 등
- 새로운이름 → 변경할 워크시트의 이름 (문자열)
📌 워크시트 이름은 중복될 수 없음
📌 특수 문자 (/, \, ?, *, [, ], : 등)는 사용할 수 없음
2. 현재 워크시트 이름 가져오기
Sub 현재시트_이름출력()
MsgBox "현재 시트 이름: " & ActiveSheet.Name
End Sub
|
📌 현재 활성화된 시트의 이름을 메시지 박스로 출력
3. 특정 시트의 이름 변경
Sub 시트이름_변경()
Sheets("Sheet1").Name = "매출현황"
End Sub
|
📌 Sheet1의 이름을 "매출현황"으로 변경
4. 첫 번째 시트의 이름 변경
Sub 첫번째시트_이름변경()
Sheets(1).Name = "데이터"
End Sub
|
📌 첫 번째 시트의 이름을 "데이터"로 변경
5. 모든 시트의 이름 출력
Sub 모든시트_이름출력()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
Debug.Print ws.Name
Next ws
End Sub
|
📌 즉석 창 (Ctrl + G 키를 눌러 Immediate 창 확인)에서 모든 시트 이름 출력
6. 사용자가 입력한 이름으로 시트 이름 변경 (InputBox 활용)
Sub 사용자입력_시트이름변경()
Dim 새이름 As String
새이름 = InputBox("새로운 시트 이름을 입력하세요:", "시트 이름 변경")
If 새이름 <> "" Then
ActiveSheet.Name = 새이름
Else
MsgBox "이름이 입력되지 않았습니다.", vbExclamation
End If
End Sub
|
📌 사용자가 입력한 값으로 현재 활성화된 시트 이름 변경
📌 이름이 입력되지 않으면 변경되지 않음
7. 모든 시트 이름을 A열에 저장
Sub 시트이름_엑셀저장()
Dim ws As Worksheet, i As Integer
i = 1
For Each ws In ThisWorkbook.Sheets
Cells(i, 1).Value = ws.Name
i = i + 1
Next ws
End Sub
|
📌 워크북 내 모든 시트 이름을 A열에 저장 (A1, A2, A3 …)
8. 시트 이름 중복 확인 후 변경
Sub 시트이름_중복확인_변경()
Dim ws As Worksheet, 새이름 As String, 중복 As Boolean
새이름 = "보고서"
중복 = False
For Each ws In ThisWorkbook.Sheets
If ws.Name = 새이름 Then
중복 = True
Exit For
End If
Next ws
If 중복 Then
MsgBox "이미 존재하는 시트 이름입니다.", vbExclamation
Else
ActiveSheet.Name = 새이름
MsgBox "시트 이름이 '" & 새이름 & "'으로 변경되었습니다."
End If
End Sub
|
📌 이미 존재하는 시트 이름과 중복되지 않도록 체크 후 변경
9. 현재 시트 이름을 이전 이름 + _OLD로 변경
Sub 현재시트_이름_OLD()
ActiveSheet.Name = ActiveSheet.Name & "_OLD"
End Sub
|
📌 현재 시트의 이름 뒤에 _OLD를 추가하여 변경
📌 예: 매출현황 → 매출현황_OLD
10. 시트 이름을 특정 패턴으로 일괄 변경
Sub 시트이름_일괄변경()
Dim ws As Worksheet, i As Integer
i = 1
For Each ws In ThisWorkbook.Sheets
ws.Name = "시트" & i
i = i + 1
Next ws
End Sub
|
📌 모든 시트 이름을 시트1, 시트2, 시트3 … 형태로 변경
11. 시트 이름 변경 후 이름을 B열에 저장
Sub 시트이름_변경_후저장()
Dim ws As Worksheet, i As Integer
i = 1
For Each ws In ThisWorkbook.Sheets
ws.Name = "Report_" & i
Cells(i, 2).Value = ws.Name
i = i + 1
Next ws
End Sub
|
📌 시트 이름을 Report_1, Report_2...으로 변경 후 B열에 저장
12. 시트 이름이 특정 단어로 시작하는 경우만 변경
Sub 특정이름_시작_변경()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
If Left(ws.Name, 3) = "OLD" Then
ws.Name = Replace(ws.Name, "OLD", "NEW", 1, 1)
End If
Next ws
End Sub
|
📌 이름이 "OLD"로 시작하는 시트만 "NEW"로 변경 (예: OLD_매출 → NEW_매출)
13. 시트 이름 길이가 31자를 초과하는 경우 수정
Sub 시트이름_길이_제한()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
If Len(ws.Name) > 31 Then
ws.Name = Left(ws.Name, 31)
End If
Next ws
End Sub
|
📌 엑셀의 시트 이름은 최대 31자 제한
📌 31자를 초과하는 경우 자동으로 잘라서 수정
📝 정리
기능
|
VBA 코드
|
현재 시트 이름 가져오기
|
MsgBox ActiveSheet.Name
|
특정 시트 이름 변경
|
Sheets("Sheet1").Name = "매출현황"
|
첫 번째 시트 이름 변경
|
Sheets(1).Name = "데이터"
|
모든 시트 이름 출력
|
For Each ws In Sheets: Debug.Print ws.Name: Next ws
|
사용자가 입력한 이름으로 변경
|
ActiveSheet.Name = InputBox("새 이름 입력")
|
모든 시트 이름을 A열에 저장
|
Cells(i,1).Value = ws.Name
|
이름 중복 체크 후 변경
|
If ws.Name = 새이름 Then MsgBox "중복"
|
현재 시트 이름 뒤에 _OLD 추가
|
ActiveSheet.Name = ActiveSheet.Name & "_OLD"
|
시트 이름 일괄 변경
|
ws.Name = "시트" & i
|
특정 단어로 시작하는 시트만 변경
|
If Left(ws.Name, 3) = "OLD" Then ws.Name = "NEW"
|
31자 초과 시 이름 잘라서 수정
|
If Len(ws.Name) > 31 Then ws.Name = Left(ws.Name, 31)
|
🔥 VBA의 Name 속성을 활용하면 워크시트 이름을 쉽게 변경하고 관리할 수 있습니다! 🚀