ОШИБКА: Ошибка "Использован старый формат, либо библиотека имеет неверный тип" при автоматизации Excel

Переводы статьи Переводы статьи
Код статьи: 320369 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Проблема

При автоматизации Microsoft Excel с помощью Microsoft Visual Basic .NET, Microsoft Visual C# .NET или Microsoft Visual C++ вызов определенных методов может привести к появлению следующего сообщения об ошибке:
Ошибка: 0x80028018 (-2147647512)
Описание: Использован старый формат, либо библиотека имеет неверный тип

Причина

Эта ошибка возникает в процессе вызова метода Excel при выполнении указанных ниже условий.
  • Метод требует указания кода языка (идентификатора LCID).
  • Используется английская версия Excel. Однако региональные стандарты настроены на использование языка, отличного от английского.
Если на клиентском компьютере установлена английская версия Excel, а для текущего пользователя установлен язык, отличный от английского, Excel попытается найти языковой пакет для установленного языка. Если языковой пакет найти не удастся, будет выведено сообщение об ошибке.

Временное решение

Для временного решения данной проблемы можно воспользоваться одним из указанных ниже способов.
  • Установите пакет многоязыкового интерфейса пользователя для используемой версии Office.
  • Вызовите метод или свойство Excel с помощью метода InvokeMember, что позволит указать параметр CultureInfo. Например, в приведенном ниже коде показано, как вызвать метод Add объекта Workbooks со значением параметра CultureInfo "en-US".
    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 см. в следующих статьях MSDN:

Создание на основе Office программных решений для использования в нескольких странах или регионах
http://msdn2.microsoft.com/en-us/library/aa168494(office.11).aspx
(на английском языке). Проблемы, связанные с глобализацией и локализацией программных решений, созданных с помощью средств Microsoft Visual Studio для системы Microsoft Office
http://msdn2.microsoft.com/en-us/library/aa192494(office.11).aspx
(на английском языке).

Статус

Данное поведение является подтвержденной ошибкой продуктов Майкрософт, перечисленных в разделе "Информация в данной статье применима к".

Дополнительная информация

Действия по воспроизведению проблемы

  1. Убедитесь в том, что на компьютере установлен язык, отличный от английского.

    Windows 2000:
    1. В панели управления Windows дважды щелкните значок Региональные стандарты.
    2. На вкладке Общие выберите язык и нажмите кнопку ОК.
    Windows XP и Windows Server 2003:
    1. На панели управления откройте средство "Язык и региональные стандарты".
    2. На вкладке Региональные параметры выберите язык и нажмите кнопку ОК.
  2. Запустите Microsoft Visual Studio .NET.
  3. В меню File (файл) выберите пункт New (создать), а затем — пункт Project (проект). В диалоговом окне New Project (создание проекта) в разделе Project Types (типы проектов) выберите пункт Visual Basic Projects (проекты Visual Basic). В разделе Templates (шаблоны) выберите пункт Windows Application (приложение Windows) и нажмите кнопку ОК. По умолчанию будет создана форма Form1.
  4. В меню View (вид) выберите пункт Toolbox (инструменты) и добавьте кнопку в форму 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
Кроме того, обратитесь к следующим статьям базы знаний Майкрософт:
301982 Автоматизация Microsoft Excel с помощью Visual Basic .NET (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
302084 Автоматизация Microsoft Excel с помощью Microsoft Visual C# .NET (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Свойства

Код статьи: 320369 - Последний отзыв: 28 ноября 2007 г. - Revision: 8.5
Информация в данной статье относится к следующим продуктам.
  • 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