BUG: Excel을 자동화할 때 "이전 형식이거나 잘못된 형식 라이브러리입니다." 오류가 발생한다

기술 자료 번역 기술 자료 번역
기술 자료: 320369 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

현상

Microsoft Visual Basic .NET, Microsoft Visual C# .NET 또는 Microsoft Visual C++를 사용하여 Microsoft Excel을 자동화하는 경우 특정 메서드를 호출할 때 다음과 같은 오류가 발생할 수 있습니다.
오류: 0x80070002(-2147647512)
설명: 이전 형식이거나 잘못된 형식 라이브러리입니다.

원인

다음과 같은 경우에 Excel 메서드를 호출하면 이 오류가 발생합니다.
  • 메서드에 LCID(로캘 식별자)가 필요합니다.
  • 영어 버전의 Excel을 실행하지만 컴퓨터의 국가별 설정이 영어 이외의 언어로 구성되어 있습니다.
클라이언트 컴퓨터에서 영어 버전의 Excel이 실행되고 현재 사용자의 로캘이 영어 이외의 언어로 구성되어 있는 경우 Excel에서는 구성된 언어의 언어 팩을 찾으려고 합니다. 언어 팩을 찾지 못하면 오류가 보고됩니다.

해결 과정

이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.
  • 사용 중인 Office 버전의 Multilingual User Interface Pack을 설치합니다.
  • 호출에 대한 CultureInfo를 지정할 수 있도록 InvokeMember를 사용하여 Excel 메서드 또는 속성을 실행합니다. 예를 들어, 다음 코드에서는 "en-US"를 CultureInfo로 사용하여 Workbooks 개체의 Add 메서드를 호출할 수 있습니다.
    Dim oApp As New Excel.Application()
    oApp.Visible = True
    oApp.UserControl = True
    Dim oBooks As Object = oApp.Workbooks
    Dim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")
    oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)
    
  • 또는 Excel 메서드를 호출하기 전에 CultureInfo를 설정합니다. 예를 들면, 다음과 같습니다.
    Dim oApp As New Excel.Application()
    oApp.Visible = True
    oApp.UserControl = True
    Dim oldCI As System.Globalization.CultureInfo = _
        System.Threading.Thread.CurrentThread.CurrentCulture
    System.Threading.Thread.CurrentThread.CurrentCulture = _
        New System.Globalization.CultureInfo("en-US")
    oApp.Workbooks.Add()
    System.Threading.Thread.CurrentThread.CurrentCulture = oldCI

국가별 설정이 Office의 현재 언어 버전과 일치하지 않는 컴퓨터에서 이러한 해결 방법 중 하나를 사용하는 경우 Excel의 작동 방식과 특정 로캘에 대해 서식이 지정되었을 수 있는 데이터를 Excel에서 해석하는 방법을 잘 알고 있어야 합니다. Visual Studio .NET을 사용하여 국제화된 Excel 솔루션을 작성하는 방법에 대한 자세한 내용은 MSDN에서 다음 문서를 참조하십시오.

여러 국가/지역에서 사용할 Office 솔루션 작성
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspx(영문)
Microsoft Visual Studio Tools for the Microsoft Office System을 사용하여 작성된 솔루션에 대한 국제화 및 지역화 문제
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx(영문)

현재 상태

Microsoft는 "본 문서의 정보는 다음의 제품에 적용됩니다." 절에 나열한 제품에서 이 버그를 확인했습니다.

추가 정보

문제를 재현하는 방법

  1. 컴퓨터의 로캘이 영어 이외의 언어로 설정되어 있는지 확인합니다.

    Windows 2000의 경우:
    1. Windows 제어판에서 국가별 옵션을 두 번 누릅니다.
    2. 일반 탭에서 위치를 선택한 다음 확인을 누릅니다.
    Windows XP 또는 Windows Server 2003의 경우:
    1. 제어판에서 국가 및 언어 옵션을 엽니다.
    2. 국가별 옵션 탭에서 로캘을 선택한 다음 확인을 누릅니다.
  2. Microsoft Visual Studio .NET을 시작합니다.
  3. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 누릅니다. 새 프로젝트 대화 상자의 프로젝트 형식에서 Visual Basic 프로젝트를 누르고 템플릿에서 Windows 응용 프로그램을 누른 다음 확인을 누릅니다. 기본적으로 Form1이 만들어집니다.
  4. 보기 메뉴에서 도구 상자를 누른 다음 Form1에 단추를 추가합니다.
  5. 폼의 코드 창을 표시하려면 Button1을 두 번 누릅니다.
  6. 코드 창에서 다음 코드를
    Private Sub Button1_Click(ByVal sender As System.Object, _
                              ByVal e As System.EventArgs) _
                              Handles Button1.Click
    End Sub
    					
    다음 코드로 대체합니다.
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim oApp As Object
        Dim oDoc As Object
        oApp = CreateObject("Excel.Application")
        oApp.Visible = True
        oDoc = oApp.Workbooks.Add
        oDoc.Close()
        oApp.Quit()
        oDoc = Nothing
        oApp = Nothing
    End Sub
    					
  7. Form1 코드 모듈의 시작 부분에 다음 줄을 추가합니다.
    Option Strict Off
  8. F5 키를 눌러 프로그램을 빌드하고 실행합니다.
  9. 오류를 생성하려면 Button1을 누릅니다. 다음 줄에서 오류가 발생합니다.
    oDoc = oApp.Workbooks.Add
    					

참조

Office 자동화에 대한 자세한 내용은 다음 Microsoft Office Development 웹 사이트를 참조하십시오.
http://support.microsoft.com/ofd(영문)
또한 다음 Microsoft 기술 자료 문서를 참조하십시오.
301982 Visual Basic .NET에서 Microsoft Excel을 자동화하는 방법
302084 Microsoft Visual C# .NET을 통해 Microsoft Excel을 자동화하는 방법

속성

기술 자료: 320369 - 마지막 검토: 2008년 3월 14일 금요일 - 수정: 8.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C++ 6.1
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft Visual Studio Tools for the Microsoft Office System version 2003
키워드:?
kbvs2002sp1sweep kbautomation kbbug kbpending KB320369

피드백 보내기

 

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