엑셀의 VBA를 이용하여 특정 날짜까지만 엑셀 문서를 사용할 수 있고 그 이후에는 메시지 박스를 띄워 사용기간이 지났으니, 비밀번호를 입력하여야 사용이 가능하고 만약 비밀번호가 틀리면 지정한 셀 영역의 모든 데이터를 지우게 하는 VBA 코드입니다.
이렇게 만들어 사용한 이유는 이전 직장에서 한 지점만 있는 것이 아니라 여러 지점에서 보통 100명 이상의 스케쥴을 관리하여야 했기 때문에 만들어 배포하였으나 프로그램을 사용하는 사람이 개인이 편리하게 사용한다고 수정하고 복사한 것이 프로그램의 고유 경로와 링크, 셀 영역의 지정 함수 등이 이동 변경되어 수시로 A/S 요청이 있어 이런 수정과 복사, 직장 이외에 유출되지 않고 사용하도록 하기 위함이었습니다.

엑셀 VBA 코드 분석
엑셀 파일 실행시 자동 실행
Sub auto_open()
Dim WS As Worksheet
Dim Kabzeel_Title As String
Dim Kabzeel_Day As Date
Dim Kabzeel_Top As String
Dim Kabzeel_Capyright As String
Dim Kabzeel_T As String
설명 : 자동 실행 및 변수선언
Sub auto_open() : 자동 VBA 코드 실행
Dim WS As Worksheet : 변수선언
Dim Kabzeel_Title As String : 변수명
Dim Kabzeel_Day As Date : 변수명
Dim Kabzeel_Top As String : 변수명
Dim Kabzeel_Capyright As String : 변수명
Dim Kabzeel_T As String : 변수명
카피라이터 출력
Kabzeel_Day = Now()
Kabzeel_Title = " 갑스엘 인포 "
Kabzeel_Capyright = " © 2025. 갑스엘 인포 "
Kabzeel_Capyright2 = " 무단 수정 금지. 문의 : zoojina@gmail.com "
설명 : Capyright
Kabzeel_Day : 현재 날짜
Kabzeel_Title : 타이틀 출력
Kabzeel_Capyright : 카피라이터 출력
Kabzeel_Capyright2 : 카피라이터 출력
시트별 비밀번호 생성 잠금
For Each ws In ThisWorkbook.Worksheets
With ws
If .Name = Sheet3.Name Or .Name = Sheet4.Name Or .Name = Sheet5.Name Or .Name = Sheet6.Name Or .Name = Sheet7.Name Or .Name = Sheet8.Name Then
Else
.Visible = xlSheetVeryHidden
.Protect "0000" '// 비밀번호 설정
End If
End With
Next
설명 : 비밀번호 설정
Sheet3.Name : 시트마다 비밀번호 자동입력
Protect “0000” : 비밀번호 입력
메세지 박스 출력하기
If Format(Now, "yyyy-mm-dd") > Format("2025-03-20", "yyyy-mm-dd") Then
MsgBox " 사용기간이 지났습니다. "
strPW = InputBox("패스워드를 입력하세요!", "Password")
설명 : 사용기간이 지났습니다.
Format : 사용기간 지정
MsgBox : 문구 출력
strPW : 비밀번호 박스 출력
틀릴경우 모두 삭제
ElseIf Cells(2, 9) = "ⓒ : KABZEEL" Then
Cells(2, 2) = Kabzeel_Day
Cells(75, 2) = Kabzeel_Capyright
Else
Cells(2, 2) = " 1900-01-04 "
Cells(4, 2) = Kabzeel_Top
Cells(4, 7) = " 1900-01-04 "
Range("C6:Q6").Value = ""
Range("AA6:AK6").Value = ""
Range("AM6:BA6").Value = ""
Range("BD6:BR6").Value = ""
Range("CB6:CL6").Value = ""
Range("CN6:DB6").Value = ""
End If
설명 : 같지 않으면 모두 삭제
Cells(2, 9) : 여기가 맞아야하고
Cells(2, 2) : 같지 않으면
Cells(75, 2) : 같지 않으면
Cells(2, 2) = ” 1900-01-04 ” : 출력 문구
Cells(4, 2) = Kabzeel_Top : 출력 문구
Cells(4, 7) = ” 1900-01-04 ” : 출력 문구
Range(“C6:Q6”).Value = “” : 모두 삭제
Range(“AA6:AK6”).Value = “” : 모두 삭제
Range(“AM6:BA6”).Value = “” : 모두 삭제
Range(“BD6:BR6”).Value = “” : 모두 삭제
Range(“CB6:CL6”).Value = “” : 모두 삭제
Range(“CN6:DB6”).Value = “” : 모두 삭제
Range(“B5:DB73”).Value = “” 사용하여도 됩니다.
위의 방법은 다소 지루한 경우가 있습니다. 그래서 간편하게 엑셀 파일을 외부 노출이 되지 않게 하기 위해 맥주소를 이용하는 경우와 지정된 절대 경로를 이용하기도 합니다.
다음 글에서는 엑셀 파일을 USB나 무단 복제하여 외부에서 열어 보지 못하도록 하는 방법에 대해서 소개하겠습니다.
코드 설명이 잘못된 부분이 있을수 있습니다