반응형

엑셀 VBA 자동화 (29편): 인사/재무 대장의 무결성을 지키는 비밀번호 기반 마스터 데이터 잠금 시스템

사내 통합 인사 명부나 전사 지출 결의서 대장을 운영할 때, 마감 이후 특정 열이나 행의 데이터가 무단으로 수정되어 정산 수치가 틀어지는 골치 아픈 일이 종종 발생합니다. 오늘은 단순한 시트 보호를 넘어, 매크로 내부의 특수 통제문인 UserInterfaceOnly 속성을 가동하여 일반 작업자의 수동 수정은 완벽히 차단하고 자동화 프로그램의 수식 연산 및 데이터 갱신만 상시 허용하는 고차원 보안 매크로 시스템을 구축해 보겠습니다.
EXCEL VBA AUTOMATION

행정 조직이나 재무 부서에서 하나의 엑셀 마스터 대장을 여러 담당자가 공유하여 사용할 때 관리자를 가장 불안하게 만드는 것은 '마감 데이터의 변형'입니다. 수동으로 데이터를 복사하고 붙여넣는 과정에서 기존에 확정된 지난달 지출 금액이나 임직원 고과 점수를 실수로 덮어쓰는 행위는 시스템 정합성에 치명적인 타격을 입힙니다. 엑셀의 일반적인 시트 보호 기능을 메뉴창에서 가동하면 데이터는 안전하게 잠기지만, 반대로 우리가 구축해 둔 외부 파일 취합 매크로나 실시간 데이터 검색 프로그램마저 시트가 잠겨있다는 경고창을 띄우며 구동이 전면 중단되는 딜레마에 빠지게 됩니다. 프로그램은 자유롭게 데이터를 기록하되, 인간의 마우스 클릭과 키보드 타이핑만 선별적으로 격리 통제하는 정교한 보안 코딩 설계가 필요한 이유가 바로 여기에 있습니다.

이 문제를 완벽하게 해결하기 위해 우리는 엑셀 통합 문서가 열릴 때 자동으로 배후에서 가동되는 Workbook_Open 이벤트 레이어와 UserInterfaceOnly 인자를 활용한 매크로 보안 프레임을 이식해야 합니다. 이 시스템을 가동하면 매크로 프로그램이 백그라운드에서 동작할 때는 시트 잠금이 컴퓨터 내부적으로 일시 해제되어 자유롭게 로우 데이터 취합과 행 삭제, 수식 연산을 완결하고, 연산이 끝나는 즉시 일반 작업자의 키보드 제어권을 다시 박탈하여 철통같은 방어벽을 상시 유지하게 됩니다.

1. 보안 엔진 탑재를 위한 개발 환경 진입 및 매크로 빌드 단계
실시간 보안 잠금 매크로를 탑재하기 위해 마스터 대장 파일을 활성화한 상태에서 키보드의 Alt + F11을 동시에 눌러 VBA 엔지니어링 편집기 창을 호출합니다. 좌측 상단에 위치한 '프로젝트 탐색기' 공간에서 일반 모듈이 아닌, 파일 전체의 이벤트를 관장하는 이 통합 문서(ThisWorkbook) 객체를 찾아 마우스 왼쪽 버튼으로 더블클릭하여 전용 편집 창을 엽니다. 우측의 편집 레이어 창 상단의 첫 번째 드롭다운 메뉴를 클릭하여 Workbook을 선택하면, 파일이 열릴 때 자동으로 구동되는 Workbook_Open 프로시저 껍데기가 형성됩니다. 그 내부에 아래의 마스터 데이터 잠금 시스템 소스코드를 누락 없이 복사하여 붙여넣어 줍니다.

Private Sub Workbook_Open()
    Dim targetSheet As Worksheet
    ' 1. 보안 잠금 체계를 적용할 마스터 데이터 시트 변수 바인딩
    Set targetSheet = ThisWorkbook.Sheets("마스터데이터")

    ' 2. 매크로의 자동 기록은 완벽 허용하고 작업자의 수동 수정만 원천 차단
    With targetSheet
        .Protect Password:="SecureFin2026!", _
                 UserInterfaceOnly:=True, _
                 AllowFiltering:=True, _
                 AllowSorting:=True
    End With

    ' 화면 좌측 하단 상태 표시줄에 현재 대장의 보안 등급 알림 표출
    Application.StatusBar = "보안 안내: [마스터데이터] 시트가 매크로 전용 보안 모드로 보호 중입니다."
End Sub

2. 보안 제어 아키텍처 및 내부 핵심 인수 상세 해석
이 자동화 프로그램의 중추는 9행의 UserInterfaceOnly:=True 옵션 매커니즘입니다. 일반적인 엑셀 시트 보호는 데이터의 쓰기 권한을 전체 차단하지만, 이 특수 인수를 수식에 실어 보내면 엑셀 시스템은 오직 '인간 작업자의 수동 UI 편집'에만 자물쇠를 채우고, VBA 매크로 스크립트가 내려보내는 셀 값 입력(.Value)이나 서식 치환 명령은 완벽한 아군으로 인식하여 검문 없이 즉시 통과시킵니다. 쉼표를 찍고 하단에 연이어 선언한 AllowFiltering:=TrueAllowSorting:=True 변수 설정 또한 숨은 디테일입니다. 대장이 철저하게 잠겨 수정할 수 없는 상태에서도 사용자들이 상단 필터 단추를 마우스로 클릭하여 부서별 데이터를 조회하거나 내림차순 정렬 기능을 가동하는 행정 편의성은 열어두는 고도의 인터페이스 설계 규칙입니다.

💡 실수를 방지하는 핵심 팁 및 주의사항
  • 발행 휘발성 특성 보완: UserInterfaceOnly 속성은 파일의 물리적 하드디스크 저장 공간에 영구 저장되지 않고, 엑셀 파일이 완전히 닫히면 메모리에서 자동으로 소멸하는 휘발성 특성을 지니고 있습니다. 따라서 일반 모듈에 코드를 짜두면 파일을 다시 열었을 때 먹통이 되므로, 반드시 ThisWorkbook 객체의 Workbook_Open 구문 내부에 꽂아 넣어 파일이 켜질 때마다 실시간으로 보안 엔진이 재부팅되도록 코드를 안착시켜야 합니다.
  • 매크로 차단 우회 방어: 관리자가 아닌 타 부서 작업자가 엑셀 파일 상단의 시트 보호 해제 메뉴를 마우스로 클릭한 뒤 비밀번호를 무단으로 유추하는 것을 막기 위해 복잡한 문자 조합(SecureFin2026!)을 패스워드 상수로 고정했습니다. 코드의 유출을 막기 위해 VBA 편집기 창 상단 [도구(T)] - [VBAProject 속성] - [보호] 탭에서 프로젝트 창 자체에도 자물쇠 비밀번호를 걸어두는 것을 강력히 권장합니다.
  • 파일 확장자 포맷 준수: 보안 이벤트 매크로 스크립트가 내장된 전사 대장 문서는 상단 메뉴 [파일] - [다른 이름으로 저장]을 마우스 왼쪽 버튼으로 클릭하여 파일 형식을 반드시 '엑셀 매크로 사용 통합 문서(*.xlsm)' 포맷으로 변환 저장해야 코드가 훼손되지 않습니다.

사용자 그룹별 마스터 대장 접근 권한 통제 구조 대조 표

접근 권한 제어 대상 수동 셀 데이터 입력 및 수정 자동화 매크로 (외부 파일 취합 등) 자동 필터 및 정렬 기능 가동 최종 시트 제어 상태
일반 부서 실무 작업자 마우스 클릭 및 키보드 변경 즉시 경고창 발생하며 입력 불허 (권한 없음 - 백그라운드 통제 유지가 실행됨) 상단 필터 단추 마우스 왼쪽 클릭 후 자유로운 조회 허용 실수나 오기입으로 인한 데이터 무단 변형 오류 원천 봉쇄
취합본 매크로 프로그램 (컴퓨터 내부 연산이므로 UI 검문 프로세스를 하이패스 통과) Workbooks.Open.Copy 명령어를 통해 실시간 데이터 수직 적재 상시 허용 코드 내부 수식 제어 및 정제 로직 백그라운드 정상 완결 매크로 구동 중 시트 보호 해제 코드를 넣을 필요가 없어 고속 연산 유지
사내 공용으로 운영되는 통합 마스터 대장의 무결성을 지키는 것은 행정가이자 재무 담당자로서 데이터의 신뢰도를 사수하는 가장 중요한 이정표가 됩니다. 오늘 함께 상세히 빌드해 본 UserInterfaceOnly 기반 실시간 마스터 데이터 잠금 시스템을 실무 템플릿에 이식해 보십시오. 다른 부서 작업자들의 사소한 오타나 무단 수정으로 대장이 오염되는 스트레스에서 완벽하게 해방되어, 철저히 통제된 전산 인프라 속에서 정시 퇴근의 여유를 쟁취하실 수 있을 것입니다.
반응형

+ Recent posts