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

Support for Office 2003 has ended

Microsoft ended support for Office 2003 on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

Проблема
При автоматизации 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 = 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

При использовании одного из указанных обходных способов решения проблемы на компьютере, региональные стандарты которого не соответствуют текущей языковой версии Office следует иметь представление о поведении и способе интерпретации приложением Excel данных, отформатированных для конкретного языка. Дополнительные сведения о создании глобализованных программных решений на основе Excel с помощью Visual Studio .NET см. в следующих статьях MSDN:

Создание на основе Office программных решений для использования в нескольких странах или регионах (на английском языке). Проблемы, связанные с глобализацией и локализацией программных решений, созданных с помощью средств Microsoft Visual Studio для системы Microsoft Office (на английском языке).
Статус
Данное поведение является подтвержденной ошибкой продуктов Майкрософт, перечисленных в разделе "Информация в данной статье применима к".
Дополнительная информация

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

  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.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 см. на веб-узле Microsoft Office Development по адресу: Кроме того, обратитесь к следующим статьям базы знаний Майкрософт:
301982 Автоматизация Microsoft Excel с помощью Visual Basic .NET (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
302084 Автоматизация Microsoft Excel с помощью Microsoft Visual C# .NET (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
XL2003 XL2007
Свойства

Номер статьи: 320369 — последний просмотр: 11/28/2007 16:06:54 — редакция: 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
Отзывы и предложения