Проблемы

Если вы автоматизируете 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 с en-US в качестве CultureInfo:

    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)
  • Или задайте CultureInfo перед вызовом метода Excel. Пример:

    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
  • Создайте каталог 1033 в разделе Microsoft Office\Office11. Затем скопируйте excel.exe в каталог 1033 и переименуйте его как xllex.dll. Дополнительные сведения см. по следующей ссылке:http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx

При использовании одного из этих обходных решений для компьютера, где региональные параметры не соответствуют текущей языковой версии Office, вы должны быть знакомы с поведением Excel и тем, как 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. В меню Файл наведите указатель мыши на пункт Создать, а затем выберите пункт Проект. В диалоговом окне Новый проект в разделе Типы проектов щелкните Проекты 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 см. на следующем веб-сайте разработки Microsoft Office:

http://support.microsoft.com/ofd Кроме того, ознакомьтесь со следующими статьями базы знаний Майкрософт:

301982 Автоматизация Microsoft Excel из Visual Basic .NET

302084 Автоматизация Microsoft Excel из Microsoft Visual C# .NET

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.