증상

Microsoft Visual Basic .NET, Microsoft Visual C# .NET 또는 Microsoft Visual C++ Microsoft Excel을 자동화하는 경우 특정 메서드를 호출할 때 다음 오류가 발생할 수 있습니다.

오류: 0x80028018(-2147647512)설명: 이전 형식 또는 잘못된 형식 라이브러리

원인

다음 조건이 충족되면 Excel 메서드를 호출하는 동안 이 오류가 발생합니다.

  • 메서드에는 LCID(로캘 식별자)가 필요합니다.

  • 영어 버전의 Excel을 실행합니다. 그러나 컴퓨터의 국가별 설정은 영어가 아닌 언어로 구성됩니다.

클라이언트 컴퓨터가 영어 버전의 Excel을 실행하고 현재 사용자의 로캘이 영어 이외의 언어로 구성된 경우 Excel은 구성된 언어에 대한 언어 팩을 찾으려고 시도합니다. 언어 팩을 찾을 수 없는 경우 오류가 보고됩니다.

해결 방법 

이 문제를 해결하려면 다음 방법 중 하나를 사용할 수 있습니다.

  • Office 버전에 대한 다국어 사용자 인터페이스 팩을 설치합니다.

  • 호출에 CultureInfo를 지정할 수 있도록 InvokeMember를 사용하여 Excel 메서드 또는 속성을 실행합니다. 예를 들어 다음 코드에서는 "en-US"를 CultureInfo로 사용하여 Workbooks 개체 Add 메서드를 호출하는 방법을 보여 줍니다.

    Dim oApp As New Excel.Application()oApp.Visible = TrueoApp.UserControl = TrueDim oBooks As Object = oApp.WorkbooksDim 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 = TrueoApp.UserControl = TrueDim oldCI As System.Globalization.CultureInfo = _    System.Threading.Thread.CurrentThread.CurrentCultureSystem.Threading.Thread.CurrentThread.CurrentCulture = _    New System.Globalization.CultureInfo("en-US")oApp.Workbooks.Add()System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
  • Microsoft Office\Office11에서 1033 디렉터리를 만듭니다. 그런 다음 excel.exe 1033 디렉터리에 복사하고 이름을 xllex.dll. 자세한 내용은 다음 링크를 클릭합니다.http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx

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

http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspxMicrosoft Visual Studio Tools for the Microsoft Office System 사용하여 만든 솔루션에 대한 세계화 및 지역화 문제

http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx

상태

Microsoft는 이것이 "적용 대상" 섹션에 나열된 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.ClickEnd 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 = NothingEnd Sub
  7. Form1 코드 모듈의 시작 부분에 다음 줄을 추가합니다.

    Option Strict Off
  8. F5 키를 눌러 프로그램을 빌드하고 실행합니다.

  9. 오류를 생성하려면 Button1을 클릭합니다. 오류는 다음을 읽는 줄에서 발생합니다.

    oDoc = oApp.Workbooks.Add

참고 자료

Office Automation에 대한 자세한 내용은 다음 Microsoft Office 개발 웹 사이트를 참조하세요.

http://support.microsoft.com/ofd 또한 다음 Microsoft 기술 자료 문서를 참조하세요.

301982 Visual Basic .NET에서 Microsoft Excel을 자동화하는 방법

302084 Microsoft Visual C# .NET에서 Microsoft Excel을 자동화하는 방법

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.