Ознаки
Якщо автоматизувати Microsoft Excel за допомогою Microsoft Visual Basic .NET, Microsoft Visual C# .NET або Microsoft Visual C++, під час виклику певних методів може виникати така помилка:
Примітка.
Помилка: 0x80028018 (-2147647512)
Опис: бібліотека старого формату або неприпустимого типу
Причина
Ця помилка виникає під час виклику методу Excel за таких умов:
Для методу потрібен LCID (ідентифікатор мови).
Ви використовуєте англомовну версію Excel. Проте регіональні параметри комп'ютера настроєно для іншої мови.
Якщо на клієнтському комп'ютері використовується англійська версія Excel, а для поточного користувача настроєно мову, відмінну від англійської, Excel спробує знайти мовний пакет для вибраної мови. Якщо мовний пакет не знайдено, відображається повідомлення про помилку.
Спосіб вирішення
Щоб вирішити цю проблему, скористайтесь одним із наведених нижче способів.
Інсталюйте багатомовний пакет для свого випуску Office.
Виконайте метод або властивість Excel за допомогою InvokeMember, щоб можна було вказати CultureInfo для виклику. Наприклад, наступний код ілюструє, як ви можете викликати об'єкт Workbooks Add method з "en-US" як CultureInfo:
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)Або встановіть CultureInfo перед викликом методу Excel. Наприклад:
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Створіть каталог 1033 у Microsoft Office\Office11. Потім скопіюйте excel.exe до каталогу 1033 та перейменуйте його на xllex.dll.
Щоб дізнатися більше, перейдіть за цим посиланням:
http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx
Якщо ви використовуєте один із цих способів вирішення для комп'ютера, на якому регіональні параметри не відповідають поточній мовній версії Office, ви маєте знати, як Excel поводиться та інтерпретує дані, відформатовані для певної мови. Докладні відомості про написання глобалізованих рішень Excel за допомогою Visual Studio .NET див. в наступних статтях.
Стан
Корпорація Майкрософт підтвердила, що це помилка в продуктах Microsoft, перелічених у розділі "Застосовується до".
Додаткові відомості
Кроки для відтворення поведінки
Переконайтеся, що мовні параметри комп'ютера відмінні від англійської.
У Windows 2000:
- У Windows Панель керування двічі клацніть елемент "Регіональні параметри".
- На вкладці "Загальні" виберіть розташування та натисніть кнопку "OK".
Для Windows XP або Windows ServerWindows Server 2003:
- In Control PanelПанель керування, відкрийте пункт "Мова та регіональні параметри".
- На вкладці "Регіональні параметри" виберіть локалізацію та натисніть кнопку "OK".
Запустіть Microsoft Visual Studio .NET.
У меню "Файл" наведіть вказівник миші на пункт "Створити" та виберіть пункт "Проект". У діалоговому вікні "Новий проект" у розділі "Типи проектів" виберіть пункт "Проекти Visual Basic". У розділі Шаблони виберіть пункт Програма Windows, а потім натисніть кнопку OK. За промовчанням буде створено форму1.
У меню "Вигляд" виберіть пункт "Панель інструментів" і додайте кнопку до форми 1.
Щоб відобразити вікно коду для форми, двічі клацніть кнопку1.
У вікні коду замініть такий код
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Додайте наступний рядок на початок модуля коду Form1:
Option Strict OffНатисніть клавішу F5, щоб зібрати та запустити програму.
Щоб згенерувати повідомлення про помилку, натисніть клавішу Button1. Помилка виникає в рядку з таким текстом:
oDoc = oApp.Workbooks.Add
Посилання
Щоб отримати додаткові відомості про автоматизацію Office, відвідайте такий веб-сайт розробки Microsoft Office:
http://support.microsoft.com/ofd Крім того, ознайомтеся з такими статтями бази знань Microsoft:
301982 Автоматизація Microsoft Excel за допомогою Visual Basic .NET
302084 Автоматизація Microsoft Excel з Microsoft Visual C# .NET