- 최초 작성일: 2001-05-18
- 최종 수정일: 2026-09-30
- 조회수: 11 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 내컴퓨터에서만 실행되게 하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
오래 전에 인터넷 News Group에서 언뜻 본 것입니다.
우리가 어떤 파일을 만들었는데 다른 사람이 못보게 하려면 패스워드를 걸어두곤 합니다. 그런데 하드 디스크의 Serial Number를 이용하여 자기 컴퓨터에서만 실행되도록 할 수도 있습니다.
내컴퓨터에서만 실행되게 하기
핵심 요약: 일련 번호로 실행 제한
Scripting Runtime을 참조하고 FileSystemObject로 드라이브 일련 번호를 읽어 비교한 뒤, 다르면 Application.Quit로 엑셀을 종료합니다.
- 1단계: VB 편집기의 도구-참조에서 Microsoft Scripting Runtime을 선택합니다.
- 2단계: FSO.GetDrive("C:").SerialNumber로 일련 번호를 읽습니다.
- 3단계: 입력값과 다르면 Application.Quit로 엑셀을 종료합니다.
Step 1: 드라이브 일련 번호 확인하기
아래의 버튼을 누르면 자기 PC의 하드 디스크 드라이브 Serial Number를 알려 줍니다. 잘 적어 두시기 바랍니다. 만약 잘못 입력하게 되면 엑셀을 종료하므로 주의하세요!
이 기능을 제대로 실행하기 위해서는 아래의 프로그램 중 하나가 있어야 합니다.
- 윈도우 98 또는 윈도우 2000
- 인터넷 익스플로러 5.0 이상
- MS Office 2000
- Visual Studio 6.0
Step 2: Microsoft Scripting Runtime 참조 설정
(1) 먼저, VB Editor 상태에서 '도구-참조' 메뉴를 선택합니다. (2) '사용 가능한 참조' 목록 중에서 Microsoft Scripting Runtime 항목을 클릭합니다.
Step 3: FindSerialNum 프로시저
(3) 아래와 같은 코드를 작성합니다.
Sub FindSerialNum()
Dim FSO As Scripting.FileSystemObject
Dim varSerialNum
Dim strTemp As String
Set FSO = New Scripting.FileSystemObject
'//'도구-참조'를 통해 다른 라이브러리 파일을 참조해 주었으므로 외부 오브젝트를
'//불러다가 사용할 수 있습니다.
strTemp = strTemp & "일련 번호는 " & FSO.getdrive("C:").serialnumber & " 입니다" & vbCr
strTemp = strTemp & "이 번호를 잘 기억해 두세요. 만약 잘못 입력하면 엑셀이 종료됩니다"
MsgBox strTemp, , "주의!//By Exceller"
strTemp = ""
varSerialNum = InputBox("일련 번호를 입력하세요", "일련 번호 입력//By Exceller")
'//사용자로부터 일련 번호를 입력받습니다.
If CStr(FSO.GetDrive("C:").SerialNumber) <> Trim(CStr(varSerialNum)) Then
'//만약 입력받은 번호가 Serial Number가 서로 다를 경우 Application.Quit 명령을
'//사용하여 엑셀을 종료합니다.
strTemp = strTemp & "잘못 입력하셨습니다!" & vbCr
strTemp = strTemp & "엑셀을 종료합니다"
MsgBox strTemp, , "입력 오류!//By Exceller"
Application.Quit
End If
End Sub
Application.Quit는 지금 열려 있는 엑셀 전체를 종료합니다. 저장하지 않은 다른 통합 문서가 있으면 저장 여부를 묻는 창이 나타나므로, 테스트할 때는 중요한 파일을 모두 닫고 실행하시기 바랍니다.
FileSystemObject는 Windows 환경에서 Microsoft Scripting Runtime 라이브러리가 있을 때만 동작하며, 드라이브 일련 번호는 쉽게 확인하거나 복제할 수 있습니다. 이 방법은 가벼운 사용 제한 정도로만 활용하시고, 중요한 자료의 보안은 파일 암호나 별도의 보호 수단과 함께 고려하시기 바랍니다.
마무리
아주 간단한 코드지만 많이 응용해 보시기 바랍니다. 예를 들어 자신이 만든 Add-in 파일에 이 코드를 첨가 시킨다든지 아니면 auto_open 프로시저나 Workbook_open 이벤트 프로시저에 넣어두면 파일을 복사해 갈 수는 있겠지만 실행은 시킬 수가 없을 것입니다.
다음 시간에...
정리 — 일련 번호 제한 핵심
| 구분 | 사용한 코드 | 역할 |
|---|---|---|
| 라이브러리 참조 | 도구-참조-Microsoft Scripting Runtime | FileSystemObject 사용 |
| 개체 생성 | Set FSO = New Scripting.FileSystemObject | 파일 시스템 개체 만들기 |
| 일련 번호 읽기 | FSO.GetDrive("C:").SerialNumber | C 드라이브 일련 번호 |
| 번호 입력받기 | InputBox(...) | 사용자 입력 확인 |
| 불일치 처리 | Application.Quit | 엑셀 종료 |
자주 묻는 질문 (FAQ)
Q1. 특정 컴퓨터에서만 실행되게 하려면 어떻게 하나요?
하드 디스크 드라이브의 일련 번호를 읽어 미리 확인한 값과 비교하고, 다르면 엑셀을 종료하도록 하면 됩니다.
Q2. FileSystemObject를 쓰려면 무엇이 필요한가요?
VB 편집기의 도구-참조에서 Microsoft Scripting Runtime을 선택해야 합니다.
Q3. 이 코드는 어디에 넣어 두면 좋나요?
애드인 파일이나 Auto_Open 프로시저, Workbook_Open 이벤트 프로시저에 넣어 두면 파일을 열 때마다 확인할 수 있습니다.
마치며
드라이브 일련 번호를 확인하도록 만들면 복사한 파일이 다른 컴퓨터에서는 실행되지 않게 할 수 있습니다.