• 최초 작성일: 2001-05-18
  • 최종 수정일: 2026-09-30
  • 조회수: 11 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 내컴퓨터에서만 실행되게 하기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

오래 전에 인터넷 News Group에서 언뜻 본 것입니다.

우리가 어떤 파일을 만들었는데 다른 사람이 못보게 하려면 패스워드를 걸어두곤 합니다. 그런데 하드 디스크의 Serial Number를 이용하여 자기 컴퓨터에서만 실행되도록 할 수도 있습니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

내컴퓨터에서만 실행되게 하기

핵심 요약: 일련 번호로 실행 제한

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 항목을 클릭합니다.

참조 대화 상자에서 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 이벤트 프로시저에 넣어 두면 파일을 열 때마다 확인할 수 있습니다.

마치며

드라이브 일련 번호를 확인하도록 만들면 복사한 파일이 다른 컴퓨터에서는 실행되지 않게 할 수 있습니다.