Worksheet 개체

Name 속성

노만e 2025. 3. 13. 05:08

엑셀 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 속성을 활용하면 워크시트 이름을 쉽게 변경하고 관리할 수 있습니다! 🚀