VBA 워크시트 보호 및 보호해제 하기

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 3월 10, 2023

이 튜토리얼에서는 VBA에서 Excel 워크시트 보호에 대한 모든 것(Excel에서 워크시트를 보호하거나 보호 해제하는 방법)에 대해 설명합니다.

암호가 걸리지 않은 Excel 워크시트 보호 해제하기

비밀번호로 보호되지 않은 워크시트의 보호를 해제하려면 다음의 간단한 코드를 사용하세요:

Worksheets("Sheet1").Unprotect

비밀번호가 있는 Excel 워크시트 보호 해제하기

비밀번호로 보호된 워크시트의 보호를 해제하려면 비밀번호도 입력해야 합니다:

Worksheets("Sheet1").Unprotect "비밀번호"

시트 보호 해제하기 – 비밀번호를 분실 했을 경우

비밀번호를 모르는 상태에서 워크시트의 보호를 해제하려면 비밀번호 복구 추가 기능을 사용해야 합니다.

시트 보호하기

시트 보호를 사용하면 시트의 특정 부분을 편집하지 못하도록 잠글 수 있습니다.

이 메뉴는 > 서식 > 시트 보호 를 통해 사용하거나 시트 탭 이름에서 마우스 오른쪽 버튼으로 클릭하면 사용할 수 있습니다:

가장 일반적으로 ‘잠금’ 처리된 셀을 편집하지 못하도록 보호하여 최종 사용자만 특정 셀을 편집할 수 있도록 하는 데 사용됩니다.

셀을 선택하고 셀 서식 지정 메뉴의 보호 탭을 열면 셀을 잠글 수 있습니다(CTRL + 1).

또한 사용자가 워크시트 구조를 변경(행 및 열 삽입, 삭제, 크기 조정)하거나 자동 필터 사용 등의 작업을 하지 못하도록 할 수 있습니다.

비밀번호 없이 워크시트 보호하기

비밀번호를 입력하지 않고 워크시트를 보호하고 싶을 수 있습니다. 이렇게 하면 워크시트를 실수로 변경하는 것을 방지할 수 있고 동시에 사용자가 원하는 경우 변경할 수 있는 액세스 권한을 부여할 수 있습니다.

Worksheets("Sheet1").Protect

비밀번호로 워크시트 보호하기

Worksheets("Sheet1").Protect "비밀번호"

워크시트 보호 설정

위의 예에서는 표준 보호 설정으로 워크시트를 보호합니다. 보호되는 항목을 사용자 지정할 수도 있습니다:

Worksheets("Sheet1").Protect Password:=strPassword, DrawingObjects:=True, Contents:=True, Scenarios:=True, _
UserInterfaceOnly:=True, AllowFormattingCells:=False, AllowFormattingColumns:=False, _
AllowFormattingRows:=False, AllowInsertingColumns:=False, AllowInsertingRows:=False, _
AllowInsertingHyperlinks:=False, AllowDeletingColumns:=False, AllowDeletingRows:=False, _
AllowSorting:=False, AllowFiltering:=False, AllowUsingPivotTables:=False

위의 구문을 사용하는 대신 “매크로 기록” 기능을 사용하여 원하는 설정(위의 시트 보호 메뉴에서 선택)으로 매크로를 기록하고 기록된 코드를 프로시저에 복사 + 붙여넣는 것이 좋습니다.

Protect Sheet – Allow VBA to Make Changes

기본 설정에서는 시트를 보호하면 기본 엑셀  작업뿐만 아니라 VBA 작업에도 보호 기능이 적용됩니다. VBA가 잠긴 셀을 수정하려고 시도하면 런타임 error 1004가 표시됩니다. 이를 방지하려면 VBA가 워크시트에 작업을 요청할 때마다 워크시트의 보호를 해제했다가 다시 보호하면 됩니다:

Sub Edit_Sheet1()
    'Sheet1 보호 해제하기
    Worksheets("Sheet1").Unprotect

    'Sheet1에 구현할 코드 작성

    'Sheet1 보호 다시 실행하기
    Worksheets("Sheet1").Protect
End Sub

하지만 워크시트의 보호를 해제하거나 다시 보호하는 것을 잊어버리기 쉽습니다. 이로 인해 코딩 오류가 발생할 확률이 높아질 수 있습니다.

이러한 오류를 방지하기 위해 UserInterFaceOnly 설정을 사용할 수 있습니다. TRUE로 설정하면 워크시트가 엑셀 작업자로부터만 보호되고 VBA로부터는 보호되지 않습니다. VBA 코드는 잠금을 해제했을 때와 마찬가지로 워크시트를 자유롭게 편집할 수 있습니다.

UserInterFaceOnly에 대한 두 가지 중요한 사항:

  • 이 설정은 워크시트 보호 메뉴(위 그림)에서 사용할 수 없습니다. VBA에서 정의해야 하는 설정입니다.
  • 통합 문서를 닫을 때 이 설정은 저장되지 않습니다. 통합 문서를 열 때마다 다시 정의해야 합니다.

따라서 UserInterFaceOnly 속성을 설정하려면 이 통합 문서 모듈에 다음과 같은 Workbook_Open 이벤트 프로시저를 배치해야 합니다:

Private Sub Workbook_Open()
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        ws.Protect UserInterfaceOnly:=True
    Next ws
End Sub

Workbook_Open은 통합 문서가 열릴 때마다 실행되는 특수 이벤트 프로시저입니다. 이 프로시저는 ThisWorkbook 모듈에 배치해야 합니다. 또는 Auto_Open 이벤트 프로시저를 사용할 수도 있습니다(여기서는 다루지 않음).

매크로로 모든 시트 보호 해제하기

이 매크로는 통합 문서에 있는 모든 시트의 보호를 해제합니다:

' UnProtect All Worksheets
Sub UnProtectAllSheets()
    Dim ws As Worksheet

    For Each ws In Worksheets
        ws.Unprotect "password"
    Next ws

End Sub

매크로로 모든 시트 보호하기

이 매크로는 통합 문서의 모든 시트를 보호합니다:

' Protect All Worksheets
Sub ProtectAllSheets()
    Dim ws As Worksheet

    For Each ws In Worksheets
        ws.Protect "password"
    Next ws

End Sub

 

vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기