Office 응용 프로그램을 자동화할 때 런타임 오류 429가 나타난다

기술 자료 번역 기술 자료 번역
기술 자료: 828550 - 이 문서가 적용되는 제품 보기.
이 문서의 Microsoft Office XP, Office 2000 및 Office 97 버전에 대한 내용은 244264를 참조하십시오.
모두 확대 | 모두 축소

이 페이지에서

요약

Microsoft Visual Basic에서 New 연산자나 CreateObject 함수를 사용하여 Microsoft Office 2003 응용 프로그램의 인스턴스를 만들 때 다음 오류 메시지가 나타날 수 있습니다.
런타임 오류 '429': ActiveX 구성 요소는 개체를 만들 수 없습니다.
이 오류는 COM(구성 요소 개체 모델)이 요청한 Automation 개체를 만들 수 없어 Visual Basic에서 Automation 개체를 사용할 수 없는 경우에 발생합니다. 이 오류는 일부 컴퓨터에서만 발생합니다.

이 문서에서는 이 오류를 일으킬 수 있는 일반적인 문제를 진단하고 해결하는 방법에 대해 설명합니다.

추가 정보

Visual Basic에서는 오류 429의 원인이 몇 가지 있습니다. 다음과 같은 경우에 이 오류가 발생합니다.
  • 응용 프로그램에 문제가 있습니다.
  • 시스템 구성에 문제가 있습니다.
  • 없는 구성 요소가 있습니다.
  • 손상된 구성 요소가 있습니다.
문제의 원인을 찾으려면 문제를 구분하십시오. 클라이언트 컴퓨터에서 오류 429가 나타나면 Microsoft Office 응용 프로그램에서 다음 정보를 사용하여 오류를 구분하고 해결합니다.

참고 다음 정보 중 일부는 Office 이외의 COM 서버에도 적용될 수 있습니다. 그러나 이 문서에서는 Office 응용 프로그램을 자동화하는 경우에 대해서만 설명합니다.

코드 검사

오류 문제를 해결하기 전에 문제를 일으킬 수 있는 코드 한 줄을 구분해 봅니다.

코드 한 줄이 문제를 일으킬 수 있다는 것을 발견하면 다음 절차를 수행합니다.
  • 코드에서 명시적인 개체 만들기를 사용해야 합니다.

    한 가지 작업으로 범위가 좁혀지면 문제를 확인하기가 더 쉽습니다. 예를 들어 다음 중 하나로 암시적인 개체 만들기를 사용하는지 찾습니다.

    코드 예제 1
    Application.Documents.Add 'DON'T USE THIS!!
    코드 예제 2
    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add
    이러한 코드 예제는 모두 암시적 개체 만들기를 사용합니다. 변수가 적어도 한 번 호출될 때까지 Microsoft Office Word 2003이 시작되지 않습니다. 프로그램의 다른 경로에서 변수가 호출될 수 있으므로 문제를 찾기 어려울 수 있습니다. Application 개체가 만들어지거나 Document 개체가 만들어지는 경우 문제가 발생하는지 확인하기가 어려울 수 있습니다.

    대신 각 개체를 따로 만들 수 있도록 다음과 같이 명시적으로 호출할 수 있습니다.
    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add
    각 개체를 따로 만들 수 있도록 명시적으로 호출하면 문제를 구분하기가 더 쉽습니다. 그러면 코드도 더 쉽게 읽을 수 있습니다.
  • Office 응용 프로그램의 인스턴스를 만들 때 New 연산자 대신 CreateObject 함수를 사용합니다.

    CreateObject 함수는 대부분의 Microsoft Visual C++ 클라이언트에서 사용하는 만들기 프로세스를 밀접하게 매핑합니다. CreateObject 함수를 사용하면 버전 간 서버의 CLSID를 변경할 수도 있습니다. CreateObject 함수를 초기에 바인딩되는 개체 및 후기에 바인딩되는 개체와 함께 사용할 수 있습니다.
  • CreateObject에 전달되는 "ProgID" 문자열이 올바른지 확인한 다음 "ProgID" 문자열이 버전 독립적인지 확인합니다. 예를 들어 "Excel.Application.8" 문자열을 사용하는 대신 "Excel.Application" 문자열을 사용합니다. 오류가 발생한 시스템에 "ProgID" 문자열에 지정한 것보다 이전 또는 이후 버전의 Microsoft Office가 있을 수 있습니다.
  • Erl 명령을 사용하여 실패한 코드 줄의 줄 번호를 보고합니다. 그러면 IDE에서 실행할 수 없는 응용 프로그램을 디버깅할 수 있습니다. 다음 코드를 사용하면 만들 수 없는 Automation 개체(Microsoft Word 또는 Microsoft Office Excel 2003)를 확인할 수 있습니다.
    Dim oWord As Word.Application
     	Dim oExcel As Excel.Application
     	
     	On Error Goto err_handler
     	
     	1: Set oWord = CreateObject("Word.Application")
     	2: Set oExcel = CreateObject("Excel.Application")
     	
     	' ... some other code
     	
     	err_handler:
     	  MsgBox "The code failed at line " & Erl, vbCritical
    MsgBox 함수 및 줄 번호를 사용하여 오류를 추적합니다.
  • 다음과 같이 후기 바인딩을 사용합니다.
    Dim oWordApp As Object
    초기에 바인딩된 개체에 대해서는 프로세스 경계 전체에 해당 사용자 지정 인터페이스를 마샬링해야 합니다. CreateObject 또는 New를 사용하는 동안 사용자 지정 인터페이스를 마샬링할 수 없으면 오류 429가 나타납니다. 후기에 바인딩된 개체는 사용자 지정 프록시를 마샬링하지 않아도 되는 IDispatch 시스템 정의 인터페이스를 사용합니다. 후기에 바인딩된 개체를 사용하여 이 절차가 제대로 작동하는지 확인합니다.

    개체가 초기 바인딩되는 경우에만 문제가 발생하면 문제가 서버 응용 프로그램에 있습니다. 일반적으로 이 문서의 "자동화 서버 검사" 절에 설명된 대로 응용 프로그램을 다시 설치하여 문제를 해결할 수 있습니다.

자동화 서버 검사

CreateObjectNew를 사용할 때 발생하는 오류의 가장 일반적인 원인은 서버 응용 프로그램 문제입니다. 일반적으로 응용 프로그램의 구성이나 응용 프로그램의 설치로 인해 문제가 발생합니다. 문제를 해결하려면 다음 절차를 수행합니다.
  • 자동화하려는 Office 응용 프로그램이 로컬 컴퓨터에 설치되어 있는지 확인합니다. 이 응용 프로그램을 실행할 수 있는지 확인합니다. 확인하려면 시작, 실행을 차례로 누른 다음 응용 프로그램을 실행합니다. 응용 프로그램을 수동으로 실행할 수 없으면 응용 프로그램이 자동화를 통해 작동하지 않습니다.
  • 응용 프로그램을 다음과 같이 다시 등록합니다.
    1. 시작을 누르고 실행을 누릅니다.
    2. 실행 대화 상자에서 서버의 경로를 입력한 다음 줄의 끝에 /RegServer를 추가합니다.
    3. 확인을 누릅니다.

      응용 프로그램이 자동으로 실행됩니다. 응용 프로그램이 COM 서버로 다시 등록됩니다.
    레지스트리 키가 없어 문제가 발생한 경우 일반적으로 이러한 단계를 수행하면 문제가 해결됩니다.
  • 자동화할 응용 프로그램의 CLSID 아래에 있는 LocalServer32 키를 검사합니다. LocalServer32 키가 응용 프로그램의 올바른 위치를 가리켜야 합니다. 경로 이름은 짧은 경로 형식(DOS 8.3)이어야 합니다. 짧은 경로 이름을 사용하여 서버를 등록하지 않아도 됩니다. 그러나 공백이 포함된 긴 경로 이름은 일부 시스템에서 문제를 일으킬 수 있습니다.

    서버에 저장된 경로 키를 검사하려면 다음과 같이 Windows 레지스트리 편집기를 시작합니다.
    1. 시작을 누르고 실행을 누릅니다.
    2. regedit를 입력한 다음 확인을 누릅니다.
    3. HKEY_CLASSES_ROOT\CLSID 키로 이동합니다.

      시스템에 대해 등록된 자동화 서버의 CLSID가 이 키 아래에 있습니다.
    4. 자동화할 Office 응용 프로그램을 나타내는 키를 찾으려면 CLSID 키의 다음 값을 사용합니다. 경로에 대한 CLSID 키의 LocalServer32 키를 검사합니다.
      표 축소표 확대
      Office 서버CLSID 키
      Access.Application{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
      Excel.Application{00024500-0000-0000-C000-000000000046}
      FrontPage.Application {04DF1015-7007-11D1-83BC-006097ABE675}
      Outlook.Application{0006F03A-0000-0000-C000-000000000046}
      owerPoint.Application{91493441-5A91-11CF-8700-00AA0060263B}
      Word.Application{000209FF-0000-0000-C000-000000000046}
    5. 경로는 파일의 실제 위치와 일치해야 합니다.
    참고 짧은 경로 이름이 잘못된 경우에 올바르게 보일 수 있습니다. 예를 들어 Office 및 Microsoft Internet Explorer(기본 위치에 설치된 경우) 모두의 경로가 C:\PROGRA~1\MICROS~X\(여기서 X는 숫자)와 유사한 짧은 경로인 경우 처음에는 이 이름이 짧은 경로 이름으로 나타나지 않을 수 있습니다.

    경로가 올바른지 확인하려면 다음과 같이 하십시오.
    1. 시작을 누르고 실행을 누릅니다.
    2. 레지스트리에서 값을 복사한 다음 실행 대화 상자에 이 값을 붙여 넣습니다.

      참고 응용 프로그램을 실행하기 전에 /automation 스위치를 제거하십시오.
    3. 확인을 누릅니다.
    4. 응용 프로그램이 제대로 실행되는지 확인합니다.

      확인을 누른 후 응용 프로그램을 실행하면 서버가 제대로 등록됩니다. 확인을 누른 후에 응용 프로그램이 실행되지 않으면 LocalServer32 키 값이 올바른 경로로 바뀝니다. 가능한 경우 짧은 경로 이름을 사용합니다.
  • Normal.dot 서식 파일 또는 Excel.xlb 리소스 파일이 손상되었는지 테스트합니다. Word의 Normal.dot 서식 파일 또는 Excel의 Excel.xlb 리소스 파일 중 하나가 손상된 경우 Microsoft Word 또는 Microsoft Excel을 자동화할 때 문제가 발생할 수 있습니다. 이러한 파일을 테스트하려면 Normal.dot 또는 Excel.xlb의 모든 인스턴스에 대한 로컬 하드 드라이브를 검색합니다.

    참고 Microsoft Windows 2000을 실행하는 시스템이나 Microsoft Windows XP를 실행하는 시스템의 경우 이러한 파일의 복사본이 여러 개 있을 수 있습니다. 시스템에 설치된 사용자 프로필마다 이러한 각 파일의 복사본 하나가 있습니다.

    임시로 Normal.dot 파일이나 Excel.xlb 파일의 이름을 바꾼 다음 자동화 테스트를 다시 실행합니다. Word 및 Excel 모두에서 이러한 파일을 찾을 수 없는 경우 이러한 파일이 만들어집니다. 코드가 작동하는지 확인합니다. 새로운 Normal.dot 파일이 만들어졌을 때 코드가 작동하면 이름을 바꾼 파일을 삭제합니다. 이러한 파일은 손상된 것입니다. 코드가 작동하지 않으면 이러한 파일을 다시 원래 파일 이름으로 바꾸어 이러한 파일에 저장된 사용자 지정 설정을 저장해야 합니다.
  • 시스템에서 Windows 2000을 실행하는 경우 관리자 계정으로 응용 프로그램을 실행합니다. Office 서버는 레지스트리 및 디스크 드라이브에 대한 읽기/쓰기 액세스 권한이 있어야 합니다. 현재 보안 설정에서 읽기/쓰기 액세스를 거부하면 Office 서버에서 제대로 로드할 수 없습니다.

시스템 검사

시스템 구성으로 인해 Out-of-Process COM 서버 만들기를 사용할 때 문제가 발생할 수도 있습니다. 문제를 해결하려면 오류가 발생한 시스템에서 다음 절차를 사용합니다.
  • Out-of-Process 서버를 사용하는 경우에 문제가 발생하는지 확인합니다. 특정 COM 서버를 사용하는 응용 프로그램(예: Word)이 있으면 다른 Out-of-Process 서버를 테스트하여 COM 계층 자체에 문제가 없는지 확인합니다. 컴퓨터에 Out-of-Process COM 서버를 만들 수 없으면 이 문서의 "Microsoft Office 다시 설치" 절에서 설명한 대로 OLE 시스템 파일을 다시 설치하거나 운영 체제를 다시 설치하여 문제를 해결합니다.
  • 자동화를 관리하는 OLE 시스템 파일의 버전 번호를 검사합니다. 일반적으로 이러한 파일은 집합으로 설치되어 있습니다. 이러한 파일은 빌드 번호와 일치해야 합니다. 잘못 구성된 설치 유틸리티는 파일을 각각 별도로 잘못 설치할 수 있습니다. 이로 인해 파일이 일치하지 않게 됩니다. 자동화 관련 문제를 방지하려면 파일을 검사하여 파일 빌드가 일치하는지 확인해야 합니다.

    자동화 파일은 Windows\System32 디렉터리나 Winnt\System32 디렉터리에 있습니다. 다음 파일을 검사합니다.
    표 축소표 확대
    파일 이름버전수정한 날짜
    Asycfilt.dll3.50.50142002년 9월 4일
    Oleaut32.dll3.50.50162002년 9월 4일
    Olepro32.dll5.0.50142002년 9월 4일
    Stdole2.tlb3.0.50142002년 9월 4일
    파일 버전을 검사하려면 Windows 탐색기에서 파일을 마우스 오른쪽 단추로 누른 다음 속성을 누릅니다. 파일 버전(빌드 번호)의 마지막 네 자리 및 파일을 마지막으로 수정한 날짜를 확인합니다. 이러한 값이 모든 자동화 파일마다 같아야 합니다.

    참고 이전 버전 번호 및 이전 날짜가 Office 2003이 설치된 Windows Server 2003 컴퓨터를 사용하는 컴퓨터에서 검색됩니다. 이러한 번호와 날짜는 예와 똑같이 사용되며 값은 다를 수 있습니다.

    파일이 빌드 번호나 수정한 날짜와 일치하지 않으면 자동화 파일을 업데이트하는 자동 압축 유틸리티를 다운로드합니다.

    런타임 파일에 액세스하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    235420 Vbrun60sp4.exe가 Visual Basic 6.0 SP4 런타임 파일을 설치한다
  • 시스템 구성 유틸리티(Msconfig.exe)를 사용하여 Office 응용 프로그램에서 코드 실행을 제한할 수 있는 타사 응용 프로그램에 대한 서비스 및 시스템 시작을 검사합니다. Msconfig.exe에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
    310560 Windows XP에서 시스템 구성 유틸리티를 사용하여 문제를 해결하는 방법
    예를 들어 "스크립트 차단기" 기능이 있는 바이러스 백신 프로그램을 실행하고 있어 Outlook 자동화 응용 프로그램에 오류가 발생할 수 있습니다.

    참고 네트워크에 연결되지 않은 테스트 시스템에서 바이러스 백신 프로그램을 일시적으로 사용하지 않도록 설정하십시오.

    또는 Outlook에서 타사 추가 기능을 사용하지 않도록 설정하려면 다음과 같이 하십시오.
    1. 도구 메뉴에서 옵션을 누릅니다.
    2. 기타 탭에서 고급 옵션을 누릅니다.
    3. 고급 옵션 대화 상자에서 추가 기능 관리자를 누릅니다.
    4. 타사 추가 기능에 대한 확인란을 눌러 선택을 취소합니다.
    5. Outlook을 다시 시작합니다.
    이 방법으로 문제가 해결되면 타사 바이러스 백신 공급업체에 연락하여 바이러스 백신 프로그램 업데이트에 대한 자세한 내용을 문의하십시오.

Office 다시 설치

앞에서 설명한 방법으로는 문제가 해결되지 않는 경우 Office를 제거한 다음 다시 설치합니다. 먼저 기존 버전을 제거한 다음 원래 설치 디스크를 사용하여 Office를 다시 설치하는 것이 좋습니다.

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
219423 Office 2000 CD1를 제거하는 방법
158658 Microsoft Office 97을 완전히 제거하는 방법

참조

'429' 오류 문제 해결에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
240377 Jet 3.5가 제대로 설치되었는지 확인하는 방법(파트 I)
Office 자동화 및 코드 예제에 대한 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
http://support.microsoft.com/ofd(영문)




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.

속성

기술 자료: 828550 - 마지막 검토: 2013년 7월 16일 화요일 - 수정: 4.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Outlook 2003
  • Microsoft Office PowerPoint 2003
  • Microsoft Office Access 2003
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
키워드:?
kbtshoot kbprogramming kberrmsg kbautomation kbinfo KB828550

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com