매크로 설정 권장사항을 제대로 지키면 엑셀 VBA 자동화를 안전하고 효율적으로 운영할 수 있다. 매크로 보안 수준, 신뢰할 수 있는 위치, 디지털 서명, 모듈 구조 설계 등 핵심 지침을 종합적으로 살펴보자.
매크로 설정은 엑셀 자동화를 활용하는 과정에서 꼭 챙겨야 할 부분이다. 아무리 편리한 매크로라 해도, 보안이나 유지보수 체계가 뒷받침되지 않으면 비효율적인 운영과 보안 취약점이 발생할 수 있다. 여기서는 매크로 설정 권장사항을 구체적으로 정리해, 안전하고 원활한 엑셀 VBA 업무 흐름을 구현할 수 있도록 안내한다.
1. 매크로 보안 수준 적절히 조절
알림 없이 매크로 차단(Disable With Notification)
- 기본 추천 옵션
보안 센터 설정에서 대부분의 경우 “알림 없이 매크로 차단”을 권장한다.- 매크로가 포함된 문서를 열면 화면 상단 경고 표시줄에서 [콘텐츠 사용] 버튼을 눌러야만 실행됨
- 장점: 불필요한 매크로를 무심코 실행할 위험이 줄어든다.
- 단점: 자주 열어야 하는 안전한 매크로 파일이라면 승인 절차가 번거로울 수 있다.
서명된 매크로만 실행(Disable Except Digitally Signed Macros)
- 기업 환경에 추천
회사 내부에서 공식 인증서로 서명된 매크로만 허용하고, 서명되지 않은 매크로는 차단한다.- 장점: 보안이 강화되며, 안전한 매크로는 경고 없이 실행 가능
- 단점: 서명 관리가 필요하고, 서명되지 않은 파일은 별도 승인 절차가 필요하다.
모든 매크로 차단(Disable Without Notification)
- 예외적 케이스
모든 매크로가 전면 차단돼 매번 경고조차 뜨지 않으므로, 매크로를 사용하기 힘들다.- 장점: 악성 코드 위험 최소화
- 단점: 정상 매크로도 사용 불가.
모든 매크로 실행 허용(Enable All Macros)
- 비권장
보안이 사실상 없는 상태로, 악성 매크로에도 무방비로 노출된다.
2. 신뢰할 수 있는 위치(Trusted Locations) 활용
폴더별 안전 관리
- 엑셀 옵션 → [보안 센터] → [보안 센터 설정] → [신뢰할 수 있는 위치]에서 특정 폴더를 안전 구역으로 설정할 수 있다.
- 자주 쓰는 매크로 파일을 해당 폴더에 두면 매크로 경고 없이 곧바로 실행 가능
- 새로운 파일을 받거나 외부에서 내려받은 파일을 열 때는 여전히 경고가 뜨므로, 보안성과 편의성을 균형 있게 유지
하위 폴더 포함
- 하위 폴더도 모두 신뢰하도록 체크하면, 프로젝트 구조가 여러 층으로 나뉘었을 때 편리하다.
- 내부망 환경에서 공유 폴더 전체를 신뢰 위치로 설정하기도 하나, 악성 파일이 섞여 들어갈 수 있으므로 폴더 관리는 엄격히 해야 한다.
3. 디지털 서명 활용
SelfCert.exe를 통한 자가 서명
- 테스트용
오피스 설치 폴더 내 SelfCert.exe를 이용하면 자체 인증서를 만들 수 있다.- 소규모 팀, 개인 프로젝트에서 자가 서명 인증서를 매크로 파일에 적용하면, 보안 센터에서 “디지털 서명된 매크로만 허용” 설정 시 경고 없이 실행 가능
- 단, 외부 PC나 다른 사용자에게 배포할 때는 인증서가 신뢰되지 않을 수 있다.
정식 인증서(사내 PKI)
- 대규모 기업 환경
사내 공인 인증 인프라(PKI)나 외부 정식 인증 기관에서 발급받은 인증서를 이용하면, 매크로 파일에 공인된 서명을 넣어 배포 가능- 모든 PC에서 해당 인증서를 신뢰 목록에 추가하면, 서명된 매크로를 안전하게 실행할 수 있다.
- 관리에 비용과 절차가 필요하지만, 높은 보안성과 편의성을 보장한다.
4. 코드 구조 설계 및 모듈 관리
Option Explicit 강제
- Require Variable Declaration
VBA 에디터 [Tools] → [Options] → [Editor] 탭에서 “Require Variable Declaration”을 체크해Option Explicit
를 자동 추가하도록 한다.- 변수 오타나 선언 누락으로 인한 오류를 예방
- 대규모 프로젝트에서 유지보수성을 높이는 핵심 권장사항
모듈·클래스·폼 명명
- 이름 규칙
모듈: “mod”, 폼: “frm”, 클래스: “cls” 같은 접두어를 붙이는 컨벤션을 두면, 코드 탐색이 쉬워진다.modDataProcess
,clsCustomer
,frmInput
등- 시트 이벤트나 ThisWorkbook 등 기본 객체에도 내부 코드명(속성 창의 (Name))을 직관적으로 바꾸면 유지보수에 유리
함수·서브 분할
- 한 모듈에 너무 많은 프로시저
유지보수가 어려우므로 기능별로 모듈을 나누는 것이 좋다.- 보고서 생성 로직, 데이터 필터 로직, 에러 처리 로직 등 각각 별도 모듈로 분할
- 협업할 때 코드 충돌이 줄어들고, 구간별로 책임이 명확해진다.
5. 이벤트·경고 메시지 설정
EnableEvents, ScreenUpdating 등
- 성능 최적화
매크로 실행 시Application.EnableEvents = False
,ScreenUpdating = False
,DisplayAlerts = False
조합으로 속도를 높일 수 있다.- 작업이 끝나면 반드시
True
로 복원 - 화면 깜빡임 최소화 및 대량 연산 처리 시 월등히 빠른 작업 가능
- 실수로 복원하지 않으면 다른 작업이 불편해질 수 있으므로 주의
- 작업이 끝나면 반드시
Error Handling
- Error Handler
On Error GoTo
구문으로 예외 처리 루틴을 두면, 예기치 않은 중단 없이 사용자에게 안내 가능- 로그 파일 생성, MsgBox 안내 등 도입
- 기업 환경에서는 사소한 오류로도 큰 지연을 초래할 수 있으므로 에러 처리 구조가 중요
6. 사용자 교육 및 문서화
매크로 사용 지침 공유
- 일반 사용자 안내
“외부에서 받은 *.xlsm 파일은 무조건 열지 말고, IT 부서 확인 후 열기” 같은 기본 규칙을 전달- 회사 내 공용 폴더를 신뢰할 수 있는 위치로 정한 뒤, 그 폴더를 통해서만 매크로 배포
- 개인 PC에 저장된 불명 파일은 검사 후 승인해야 실행 가능
매뉴얼·README
- 유지보수 편의
매크로의 주요 기능, 의존 라이브러리, 보안 설정, 서명 방식 등을 문서화해두면, 프로젝트 규모가 커져도 일관성 유지- 팀원이 바뀌거나, 오랜만에 코드를 열 때도 쉽게 적응
7. 사내 정책·그룹 정책(GPO) 활용
전사적 매크로 보안 정책
- Group Policy
Windows 도메인 환경에서는 그룹 정책으로 모든 PC에 대해 매크로 보안 수준, 신뢰 위치, 인증서 등록 등을 일괄 설정 가능- 대기업·기관에서 각 사용자 PC를 개별적으로 세팅하기 어렵다면 GPO를 통해 표준화
- 매크로 설정 권장사항을 강제하면 악성 매크로 침투 위험이 줄어든다.
사내 표준 인증서
- Internal CA
사내 CA를 이용해 매크로 인증서를 발급·갱신하며, 전 직원 PC에 해당 인증서를 신뢰하도록 배포- 서명된 매크로만 실행 옵션과 결합하면, 기업 내부 문서 자동화 보안을 대폭 강화할 수 있다.
추가 팁: 매크로 성능과 보안 동시 달성
- Late Binding vs. Early Binding
다른 오피스 제품(워드, 아웃룩)과 연동할 때, Early Binding(참조 설정) + Late Binding(CreateObject
) 각각 장단점이 있다. 대규모 팀 환경에선 Late Binding이 편하지만 IntelliSense가 안 나오는 단점이 있다. - 분산 버전 관리
Git 또는 SVN 등 버전 관리 시스템을 사용해 매크로를 *.bas 모듈 파일 형태로 저장·관리하면 충돌 및 이력 추적이 용이하다. - 종합 테스트
중요한 매크로는 배포 전에 여러 OS·오피스 버전에서 보안 설정을 다양하게 바꿔가며 테스트해야 예기치 않은 차단이나 경고 누락을 막을 수 있다.
예시 코드: 매크로 보안 및 설정 일괄화
아래 코드는 기업 내부에서 배포되는 엑셀 파일의 열기 이벤트(이벤트 매크로)로, 보안 설정 상황을 점검하고 필요한 안내를 띄우는 간단한 예시다.
Private Sub Workbook_Open()
' 이 매크로가 실행되려면 "서명된 매크로만 실행"이거나
' "알림 없이 매크로 차단" 옵션이어야 가능
If Application.Calculation <> xlCalculationAutomatic Then
Application.Calculation = xlCalculationAutomatic
MsgBox "계산 모드를 자동으로 변경했습니다.", vbInformation
End If
If Application.DisplayAlerts = False Then
Application.DisplayAlerts = True
MsgBox "경고 메시지를 다시 표시하도록 복원했습니다.", vbInformation
End If
' 로깅 시스템
Call LogOpenEvent("열림 완료: 보안 설정 정상")
End Sub
Private Sub LogOpenEvent(msg As String)
' 간단한 로그 기록 예시
Dim fnum As Integer
fnum = FreeFile
Open ThisWorkbook.Path & "\log.txt" For Append As #fnum
Print #fnum, Now & " - " & msg
Close #fnum
End Sub
- 설명
Workbook_Open
이벤트로 파일을 열 때 현재 Application 개체의 일부 설정(계산 모드, 알림 표시 등)을 확인·원복한다.- 기업 환경에서 중요한 매크로라면 이런 식으로 보안 설정이나 사용자 환경을 자동 점검해, 문제 발생률을 낮출 수 있다.
마무리: 매크로 설정 권장사항 종합 정리
매크로 설정 권장사항을 충실히 지키면, 엑셀 VBA 자동화를 안전하게 활용하고 유지보수 부담을 줄일 수 있다. 매크로 보안 수준과 신뢰할 수 있는 위치(Trusted Locations) 설정, 디지털 서명, 모듈 구조 설계, Option Explicit 강제, 이벤트·경고 메시지 제어, 기업 정책(GPO) 등이 대표적인 핵심 지침이다. 특히 대규모 조직에서는 표준 인증서나 그룹 정책을 통해 전사적인 매크로 보안·운영 정책을 마련해야 악성 매크로나 실수로 인한 피해를 예방할 수 있다.
이처럼 매크로 설정 권장사항을 체계적으로 적용하면, 업무 자동화 과정에서 발생할 수 있는 위험 요소를 크게 줄이고, 매크로 사용성을 높일 수 있다. 결과적으로 반복 업무가 효율화되며, 팀 간 협업과 장기 유지보수도 원활해진다.
'#4 VBA > #4.1 환경설정 및 기본개념' 카테고리의 다른 글
신뢰할 수 있는 위치(Trusted Location) 설정 완벽 가이드 (0) | 2024.12.29 |
---|---|
Application 개체 살펴보기 완벽 정리 (0) | 2024.12.29 |
VBA와 다른 오피스 제품 연관성 완벽 정리 (1) | 2024.12.29 |
VBA 코드 줄 넘김 규칙 완벽 가이드 (0) | 2024.12.29 |
매크로 보안 경고 대처 방법 완벽 정리 (0) | 2024.12.29 |