Ошибка при вызове метода контекста windows произошла исключительная ситуация 0x8002000b

1С и Ексель
   bard666

15.05.15 — 10:30

Столкнулся со следущим: При сохранении файла ексель в 1С вылетает ошибка:

Ошибка при вызове метода контекста (Save)

                ТекущийДокЕксель.Save();

по причине:

Произошла исключительная ситуация (Microsoft Excel): Метод Save из класса Application завершен неверно

Порылся на форумах, внятного ответа как исправить не нашёл.

Делается следущее: есть файл екселя (.xls) с заданной структурой, в него вносятся данные, сохраняются, отсылаются на почты.

Может ли быть такая ошибка из-за того, что на сервере, где выполняется обработка стоит 2013 офис и файл открывается в режиме совместимости? Как это обходить?

   bard666

1 — 15.05.15 — 10:59

Метод saveAs вообще не обнаружен.

   Ненавижу 1С

2 — 15.05.15 — 11:01

может прав нет на место сохранения?

   bard666

3 — 15.05.15 — 11:01

Никто не сталкивался?

   bard666

4 — 15.05.15 — 11:02

Права есть. Если просто открыть екселем, изменить и сохранить как — все прокатывает, а через 1С сохранить не получается.

   bard666

5 — 15.05.15 — 11:04

Создается файлик, но ячейки пустые. Формат вроде нужный — .xls

   Ненавижу 1С

6 — 15.05.15 — 11:05

(4) если это делается на сервере, то права надо смотреть у пользователя под кем работает служба сервера приложений

   фобка

7 — 15.05.15 — 11:13

Новая книга? Попобуй saveas()

   bard666

8 — 15.05.15 — 11:13

(6) Попробую уточнить. По результатам отпишусь.

   bard666

9 — 15.05.15 — 11:13

(7) При этом методе

Метод объекта не обнаружен (SaveAs) ТекущийДокЕксель.SaveAs(КаталогДанных + «» + ТекИмя);

   фобка

10 — 15.05.15 — 11:14

Текущийдокэксель это книга или аппликейшн?

   фобка

11 — 15.05.15 — 11:17

Ну кароч ты книгу должен сохранять. Покажи что присваиваешь текущийдокэксель

   bard666

12 — 15.05.15 — 11:32

До меня делалось:

Код функции, которая возвращает ТекущийДок

Excel    = 0;

    
    Попытка

        Excel = Новый COMОбъект(«Excel.Application»);

    Исключение

        Сообщить(«Не удалось инициализировать Excel»);

        Возврат Неопределено;

    КонецПопытки;

    
    Попытка

        тИмяСупера    = СокрЛП(Супервайзер.Наименование);

        тИмяСупера    = СтрЗаменить(тИмяСупера, «#», «»);

        чПоз    = Найти(тИмяСупера, » «);

        Если чПоз > 0 Тогда

            тИмяСупера    = СокрЛП(Лев(тИмяСупера, чПоз));

        КонецЕсли;

        
        тТекстАшан    = «»;

        чПозНайшлиАшан    = Найти(Должность.Наименование, «АШАН»);

        Если чПозНайшлиАшан > 0 Тогда

            тТекстАшан    = «_ashan»;

        КонецЕсли;

        
        ИмяФайлаКопия = тИмяСупера + «_» + СокрЛП(Должность.Должность) + тТекстАшан + «_» + СокрЛП(Должность.Код) + «_»+Месяц(ТекущаяДата());    

        ИмяФайлаКопия = СтрЗаменить(ИмяФайлаКопия,»00000″,»»);

        ИмяТекужегоДокументаЕксель = СокрЛП(КаталогДанных) + «» + ИмяФайлаКопия + «.xls»;

        
        Попытка

            КопироватьФайл(ИмяФайла, ИмяТекужегоДокументаЕксель);         

            Excel.Workbooks.Open(ИмяТекужегоДокументаЕксель);

        Исключение

            Сообщить(«Некорректное имя файла при копировании (» + ИмяФайла + «) в (» + ИмяТекужегоДокументаЕксель + «)»);

            Excel    = 0;

        КонецПопытки;

        
    Исключение

        Сообщить(ОписаниеОшибки());

        Excel.Quit();

        Excel    = 0;

    КонецПопытки;

    Возврат Excel;

   фобка

13 — 15.05.15 — 11:33

(12) в данном случае текущийдок это не книга

   фобка

14 — 15.05.15 — 11:34

Текдок.activeworkbook

   фобка

15 — 15.05.15 — 11:35

И да — в (12) копрокод

   bard666

16 — 15.05.15 — 11:37

(15) Пробовал

ТекущийДокЕксель.Application.Workbooks.SaveAs(КаталогДанных + «» + ТекИмя);

ТекущийДокЕксель.Workbooks.SaveAs(КаталогДанных + «» + ТекИмя);

Также не видит функцию

   bard666

17 — 15.05.15 — 11:43

(15)

{Форма.Форма.Форма(571)}: Ошибка при вызове метода контекста (SaveAs)

                ТекущийДокЕксель.ActiveWorkbook.SaveAs(КаталогДанных + «» + ТекИмя);

по причине:

Произошла исключительная ситуация (Microsoft Excel): Метод SaveAs из класса Workbook завершен неверно

   фобка

18 — 15.05.15 — 11:43

(16) workbooks это не workbook — другой объект

   Wern

19 — 15.05.15 — 11:43

(16) смотри (12). то что у тебя все неправильное написание.

   фобка

20 — 15.05.15 — 11:44

Ответ дан выше, перечитай (14)

   bard666

21 — 15.05.15 — 11:46

(20) я в (17) показал какая ошибка выпадает при ТекущийДокЕксель.ActiveWorkbook

   bard666

22 — 15.05.15 — 11:47

(19) где неправильно?

   фобка

23 — 15.05.15 — 11:47

Сообщить(каталогданных+»»+текимя);

   bard666

24 — 15.05.15 — 11:58

(23) Здесь все четко.

«F:Ведомостиимя.xls»

   фобка

25 — 15.05.15 — 12:01

(24) Если файл существует попробуй опять save(). Для saveas можно вторым параметром задать формат файла еще

   bard666

26 — 15.05.15 — 12:07

(25) Я ж говорю — ошибка есть, но файл пустой появляется..)

   bard666

27 — 15.05.15 — 12:10

(25) Попробовал передать формат

{Форма.Форма.Форма(571)}: Ошибка при вызове метода контекста (SaveAs)

                ТекущийДокЕксель.ActiveWorkbook.SaveAs(КаталогДанных + «» + ТекИмя, «.xls»);

по причине:

Произошла исключительная ситуация (Microsoft Excel): Метод SaveAs из класса Workbook завершен неверно

   фобка

28 — 15.05.15 — 12:13

(27) не, формат это число. Передай туда 50

   фобка

29 — 15.05.15 — 12:16

Существует ли на сервере f:ведомости?

   bard666

30 — 15.05.15 — 12:17

(28) Создал. Ура! Осталось протестировать откроет ли 2003 офис

   фобка

31 — 15.05.15 — 12:22

(30) Вбей в справке по vba xlFileFormat

   bard666

32 — 15.05.15 — 12:56

(31) а в Save есть подобные параметры?

   фобка

33 — 15.05.15 — 13:12

(32) нет, он вообще без параметров

   bard666

34 — 15.05.15 — 13:20

(33) Тогда ладно. Файлики создаются.

Есть ещё вопрос.

Обработина, сделанная по образу и подобию

http://catalog.mista.ru/public/88055/

ругается на .Windows(1).Visible = 1;

   фобка

35 — 15.05.15 — 13:28

(34) значит опять путанница с объектами

   bard666

36 — 15.05.15 — 13:29

Код такой:

ТабДок = Новый табличныйДокумент;

    АктивныйДокумент = ПолучитьМакет(«Макет»);  //— Макет Active Document лист Ексель.

    КомОбъект = АктивныйДокумент.Получить();    

    //— далее пишем в Cells(НомерСтроки, НомерСтолбца). Value  все что нужно. см.пример ниже

    //шапка

    Лист=КомОбъект.Sheets(1);

    
        
    Лист.Cells(9,4).Value=Идент;

    Лист.Cells(10,4).Value=Док.Организация.ПолноеНаименование();

    Лист.Cells(11,4).Value=НомерКонтракта;

    Лист.Cells(12,4).Value= ?(ЗначениеЗаполнено(Дата), Формат(Дата, «ДФ=dd.MM.yyyy»), Формат(Док.Дата, «ДФ=dd.MM.yyyy»));

    Лист.Cells(13,4).Value=НомРеестра;

    СимволовДоНулей=Найти(ДокППИ.Номер,»0″);

    НомППИ=Число(Прав(ДокППИ.Номер,СтрДлина(ДокППИ.Номер)-СимволовДоНулей-1));

    Лист.Cells(14,4).Value=СокрЛП(Формат(НомППИ, «ЧГ=0»));

    Лист.Cells(15,4).Value=Формат(ДокППИ.Дата, «ДФ=dd.MM.yyyy»);

    
    //Зарплата к выплате организаций

    РезультатЗапроса = Запрос.Выполнить();

    
    Если НЕ(РезультатЗапроса.Пустой()) Тогда

        
        //СтрокаОтчета = Лист.Range(«Строка»);

        СтрокаОтчета = Лист.Range(«A20»);

        Счетчик=0;

        Итого=0;

        Выборка=РезультатЗапроса.Выбрать();

        Пока Выборка.Следующий() Цикл

            Счетчик=Счетчик+1;

            Если Счетчик>1 Тогда

                СтрокаОтчета.EntireRow.Copy();

                СтрокаОтчета.EntireRow.Insert();

            КонецЕсли;

            //ТекСтрока = СтрокаОтчета.Range(«A»+(СтрокаОтчета.Row-1));

            //ТекСтрока.Cells(СтрокаОтчета.Row-1,1).Value=»Вася»;

            //ТекСтрока.Find(«<ИмяСотрудника>»).Value = СокрЛП(Выборка.ФизЛицоПолностью);

            Лист.Cells(19+Счетчик,1).Value=СокрЛП(Выборка.ФизЛицоПолностью);

            Лист.Cells(19+Счетчик,4).Value=СокрЛП(Выборка.ЛицевойСчет);

            Лист.Cells(19+Счетчик,6).Value=Число(СокрЛП(Выборка.Сумма));

            Итого=Итого+Выборка.Сумма;

        КонецЦикла;

    КонецЕсли;

    
    //итоговая строка

    Лист.Cells(19+Счетчик+1,4).Value=СчетКонтракта;

    Лист.Cells(19+Счетчик+1,6).Value=Итого;

    
    Лист.Cells(19+Счетчик+20,1).Value=»»;   //заплатка с целью увидеть макет целиком

    КомОбъект.Application.Visible = 1;

    КомОбъект.Windows(1).Visible = 1;

    
    КомОбъект.Activate();

   bard666

37 — 15.05.15 — 13:30

(35) выложил код. Запросы всякие вырезал.

   bard666

38 — 15.05.15 — 13:32

Вся эта ботва вылезла когда поставили 2013 офис)

   DomovoiAtakue

39 — 15.05.15 — 13:43

Отдельный момент.

Я может ошибаюсь: по коду если все удачно сохранилось, то объект excel не удаляется.

   bard666

40 — 15.05.15 — 13:45

(39) не совсем понимаю к чему это..

   bard666

41 — 15.05.15 — 13:48

Ошибка такая: Ошибка при вызове метода контекста (Windows)

    КомОбъект.Windows(1).Visible = 1;

по причине:

Произошла исключительная ситуация (0x8002000b)

   DomovoiAtakue

42 — 15.05.15 — 13:54

(40)Ну если я все правильно понимаю, то 10 раз запустите свой код, не выходя из 1с, и в процессах будет висеть 10 excel-ей.

   bard666

43 — 15.05.15 — 14:01

(42) Это все проверяю

   bard666

44 — 15.05.15 — 14:02

У меня просто открывается ексель как приложение, а окна документа не видно. Серый экран.

   bard666

45 — 15.05.15 — 14:08

А со второго раза создает.

  

bard666

46 — 15.05.15 — 14:26

Придумал как поправить:

Вместо

КомОбъект.Application.Visible = 1;

    КомОбъект.Windows(1).Visible = 1;

    
    КомОбъект.Activate();

Делаю

    
    
    КомОбъект.Activate();

    КомОбъект.Windows(1).Visible = 1;

  

JaZDik

10.01.14 — 08:57

{Форма.Форма.Форма(26)}: Ошибка при вызове метода контекста (Worksheets)

    Док = ТабЕксель.Worksheets(«на.уд.киль»);

по причине:

Произошла исключительная ситуация (0x8002000b)

  

Wobland

1 — 10.01.14 — 08:58

спасибо, не знал

  

Рэйв

2 — 10.01.14 — 09:00

(0)Цифру попробуй, а не текст.

  

JaZDik

3 — 10.01.14 — 09:00

В чем может быть проблема

  

JaZDik

4 — 10.01.14 — 09:01

(2) попробывать например Док = ТабЕксель.Worksheets(«1»); ?

  

Мыш

5 — 10.01.14 — 09:04

Док = ТабЕксель.Worksheets(1);

  

JaZDik

6 — 10.01.14 — 09:07

(5) (2) теперь

{Форма.Форма.Форма(74)}: Значение не является значением объектного типа (Товары)

НоваяСтрока=НовДок.Товары.Добавить();

  

Wobland

7 — 10.01.14 — 09:08

(6) думаешь, оно таки объектного?

  

Мыш

8 — 10.01.14 — 09:08

(6) Что сделать то хочешь?

  

Рэйв

9 — 10.01.14 — 09:08

(6)Посмотри ТипЗнч(НовДок) в табло. Скорее всего удивишься

  

Мыш

10 — 10.01.14 — 09:10

  

JaZDik

11 — 10.01.14 — 09:11

(8) Выгрузить 1с Excel в 1с

  

Мыш

12 — 10.01.14 — 09:12

(11) Может быть прочитать данные из Экселя и записать их в 1С? Я угадал? )

  

JaZDik

13 — 10.01.14 — 09:12

(9) Где это поглядеть. Просто первй раз с этим столкнулся.

  

Мыш

14 — 10.01.14 — 09:13

(13) Ctrl+Alt+W

  

Wobland

15 — 10.01.14 — 09:14

(9) (14) научите его ещё Сообщать вместо шифт+ф9, ага

  

Мыш

16 — 10.01.14 — 09:17

(15) Да ладно. От задачи зависит же. Когда табло удобнее, когда расчет выражения.

  

JaZDik

17 — 10.01.14 — 09:19

(14) Пусто=)

  

Wobland

18 — 10.01.14 — 09:20

(17) внезапно, правда?

  

НаборДанных

19 — 10.01.14 — 09:20

  

Рэйв

20 — 10.01.14 — 09:21

(17)Ну тогда у тебя нарисовалась задача минимум — сделать чтобы оно было типа «ДокументОбъект»:-)

  

НаборДанных

21 — 10.01.14 — 09:22

+Код своей загрузки вывали сюда, подскажут быстрее в 146 раз.

  

Рэйв

22 — 10.01.14 — 09:23

*задумчиво

пора что-то придумывать спрашивать вместо фотки у мужиков. А то нарушаем гармонию Вселенной.

  

JaZDik

23 — 10.01.14 — 09:23

(21) Минуту Щас выгружу… Просто в чем дело то. В старой базе обработка работала. Теперь, когда начали год создали новую бази и там обработка не пашет.

  

Wobland

24 — 10.01.14 — 09:26

(20) стишок или песенку?

  

Wobland

25 — 10.01.14 — 09:27

(24) -> (22)

  

НаборДанных

26 — 10.01.14 — 09:28

(22)Спрашивать у мужиков надо фотки жен или подруг)

  

JaZDik

27 — 10.01.14 — 09:29

  

JaZDik

28 — 10.01.14 — 09:29

Вот обработка

  

Рэйв

29 — 10.01.14 — 09:32

(24)Ага. Видео топикстартера декламирующего стишок, стоя на табуретке:-) Это идея!

  

Рэйв

30 — 10.01.14 — 09:33

(26)Начнут ныть что они бедные , несчастные и насквозь холостые и неоподруженые:-)

  

НаборДанных

31 — 10.01.14 — 09:33

Если  Док.Cells(Row, 1).Value= «К /с 30101810500000000609 пгт. Кильмезь, ул. Свободы, 12 а»  Тогда

Тут у тебя скорее всего условие не пролазит, а далее у тебя уже нет создания дока, думай дальше.

  

НаборДанных

32 — 10.01.14 — 09:34

И, с трудом верится, что это «работало, работало и перестало с нового года!».

  

JaZDik

33 — 10.01.14 — 09:41

(32) В старой базе работало. Она там камазом переханная и не обновленная. Щас стоит БПпроф послденяя… и на ней не пашет

  

Wobland

34 — 10.01.14 — 10:10

(33) а новую базу ты камазом, конечно, переехать забыл

  

andr_andrey

35 — 10.01.14 — 11:02

(32) Думаю, он закрыл всплывшее окно Excel-я. :)

  

Black Friday

36 — 10.01.14 — 11:21

(31) сравнивать значение определенной ячейки с константой? готично…

(33) а если изменятся реквизиты поставщика/покупателя — другую обработку писать?

  

stix2010

37 — 10.01.14 — 15:01

(0) Сейчас писать загрузки через COM немодно, используйте ADO

или загрузку файлов xlsx,

недавно пришлось переписывать загрузки из-за лицензий ms office

I have the following code to open a workbook and keep just one sheet:

//Get a new workbook.
oWB = app.Workbooks.Add(Missing.Value);

int len = oWB.Sheets.Count;

for (int i = 1; i < len; i++)
{
    ((Worksheet)oWB.Sheets[i]).Delete();
}

oSheet = (Microsoft.Office.Interop.Excel.Worksheet)oWB.ActiveSheet;

This code has worked for many years in many client configurations.

For some reason, I have a customer with excel 2013 (in Hebrew), and on his machine I get the following exception:

System.Runtime.InteropServices.COMException (0x8002000B): Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))
   at Microsoft.Office.Interop.Excel.Sheets.get__Default(Object Index)
   at IOSIGHT.Win.ActiveReports.ExcelHelper.StartExcel()

If I understand the situation, it seems that for some reason the workbook was left with no sheets,
so then call to oWb.ActiveSheet throws an exception.
Any idea what caused this?

And yes I saw other posts on the same exception, but my code does not match their scenarios.

************** Текст исключения **************

System.Runtime.InteropServices.COMException (0x8002000B): Неверный индекс. (Исключение из HRESULT: 0x8002000B (DISP_E_BADINDEX))

в Microsoft.VisualBasic.CompilerServices.LateBinding .LateGet(Object o, Type objType, String name, Object[] args, String[] paramnames, Boolean[] CopyBack)

в Microsoft.VisualBasic.CompilerServices.NewLateBind ing.LateGet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack)

в WindowsApplication1.Form_Main_Window.Form_Main_Win dow_Load(Object sender, EventArgs e)

в System.EventHandler.Invoke(Object sender, EventArgs e)

в System.Windows.Forms.Form.OnLoad(EventArgs e)

в System.Windows.Forms.Form.OnCreateControl()

в System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)

в System.Windows.Forms.Control.CreateControl()

в System.Windows.Forms.Control.WmShowWindow(Message& m)

в System.Windows.Forms.Control.WndProc(Message& m)

в System.Windows.Forms.Form.WmShowWindow(Message& m)

в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Загруженные сборки **************

mscorlib

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2633.0 built by: NET471REL1LAST_C

CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll

—————————————-

Бриз_ПП

Версия сборки: 1.7.0.1

Версия Win32: 1.7.0.1

CodeBase: file:///C:/Breez_PP/%D0%91%D1%80%D0%B8%D0%B7_%D0%9F%D0%9F_x64.exe

—————————————-

Microsoft.VisualBasic

Версия сборки: 10.0.0.0

Версия Win32: 14.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll

—————————————-

System

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

—————————————-

System.Core

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2633.0 built by: NET471REL1LAST_C

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

—————————————-

System.Windows.Forms

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

—————————————-

System.Drawing

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

—————————————-

System.Configuration

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

—————————————-

System.Xml

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2612.0 built by: NET471REL1LAST_B

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

—————————————-

System.Runtime.Remoting

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll

—————————————-

System.Data

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2633.0 built by: NET471REL1LAST_C

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll

—————————————-

System.Data.resources

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Data.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Data.resources.dll

—————————————-

System.Transactions

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll

—————————————-

System.EnterpriseServices

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll

—————————————-

Microsoft.Office.Interop.Excel

Версия сборки: 15.0.0.0

Версия Win32: 15.0.4569.1506

CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.Office.Interop.Excel/15.0.0.0__71e9bce111e9429c/Microsoft.Office.Interop.Excel.dll

—————————————-

office

Версия сборки: 15.0.0.0

Версия Win32: 15.0.4613.1000

CodeBase: file:///C:/Windows/assembly/GAC_MSIL/office/15.0.0.0__71e9bce111e9429c/office.dll

—————————————-

mscorlib.resources

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll

—————————————-

System.Windows.Forms.resources

Версия сборки: 4.0.0.0

Версия Win32: 4.7.2556.0 built by: NET471REL1

CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll

—————————————-

  • Remove From My Forums
  • Question

  • Hello All,

    I’ve recently come across a problem with creating excel files on a particular computer. The computer in question is XP SP3 with Excel 2007. Whenever I try to create an Excel file, add sheets and change the sheet names I come across this error:

    Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

    What confuses me is that the same piece of code in an earlier version of the program worked perfectly fine on the computer. Not only that, but the current code that throws this error on the aforementioned system works perfectly on a machine with XP SP3 and
    Excel 2003, and another with Windows 7 and Excel 2010.

            Dim objExcel As New Excel.Application

            objExcel.Workbooks.Add()
            objExcel.Worksheets.Add()

    Code works fine up until here:

        objExcel.ActiveWorkbook.Worksheets(1).Name = «blah blah»

    My gut is telling me this is more an issue with the system than it is with the code as I’ve tried this before and on different machines and had it working perfectly. I’ve looked at the other 0x8002000B error posts and they weren’t entirely applicable to
    my specific issue.  I’m completely lost though, and would appreciate any comments or advice anyone has on this.

Answers

  • The error does not necessarily come from the index of the worksheet. It can also mean that, inernally, a value <> 0 has been passed to IDispatch::GetTypeInfo.

    Based on the line of your first post,

       objExcel.ActiveWorkbook.Worksheets(1).Name = «blah blah»

    try splitting it:  (Also add the right types with each declaration or As Object if you have option strict off.)

      Dim wb = objExcel.ActiveWorkbook
      Dim sheets = wb.Worksheets
      Dim count = sheets.count ‘if it exists
      Msgbox (count)
      Dim sheet = sheets(0)

    Does the last line throw the exception?


    Armin

    • Marked as answer by

      Wednesday, July 11, 2012 7:02 PM

  • Remove From My Forums
  • Question

  • Any ideas why I am getting COMException when I was expecting and handling an exception of type

    CrystalDecisions.CrystalReports.Engine.InvalidArgumentException

    Why are those nasty interop exceptions showing up ?

    Thanks

    Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Runtime.InteropServices.COMException: Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

    Source Error:

Answers

  • Hello,

    This is definitely a usability issue.  I will track it with our development team and they will have to address it in a future release or service pack.

    Keith — Business Objects

  • Remove From My Forums
  • Question

  • Any ideas why I am getting COMException when I was expecting and handling an exception of type

    CrystalDecisions.CrystalReports.Engine.InvalidArgumentException

    Why are those nasty interop exceptions showing up ?

    Thanks

    Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.Runtime.InteropServices.COMException: Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

    Source Error:

Answers

  • Hello,

    This is definitely a usability issue.  I will track it with our development team and they will have to address it in a future release or service pack.

    Keith — Business Objects

I have a part of code which tries to export data (from database) to Excel. When I am trying to perform this task, it is generating this error:

System.Runtime.InteropServices.COMException occurred
Additional information: Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

Code which is generating this error:

string ExcelFileName = RootFolder + "\" + "Work_Sheet.xls";
File.Copy(RootFolder + "\" + "WorksOrder_Template.xls", ExcelFileName);
Excel.Workbook xlWorkBook;
xlWorkBook = excelApp.Workbooks.Open(ExcelFileName, 0, false, Type.Missing, Type.Missing, Type.Missing, true, Type.Missing, Type.Missing, Type.Missing, true, Type.Missing, false, true, Type.Missing);
Excel.Worksheet Page2;
Excel.Worksheet Page3;
Page2 = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item("Sheet2");
Page3 = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item("Sheet3");

The code line on :

Page3 = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item("Sheet3");

is generating the aforementioned error. Any idea how to solve this issue?

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Sargez

Дата регистрации: 21.10.2010
Сообщений: 247

«Здравствуйте!<br><br>Никак не могу понять в чем причина. ругается вот на эту строчку:<br>Лист1.Rows(ТекСтрочка+»:»+ТекСтрочка).Select();<br><br>ошибка:<br><br><br>{Форма.Форма.Форма(212)}: Ошибка при вызове метода контекста (Select)<br> Лист1.Rows(ТекСтрочка+»:»+ТекСтрочка).Select();<br>по причине:<br>Произошла исключительная ситуация (Microsoft Office Excel): Метод Select из класса Range завершен неверно<br><br>В чем проблема, подскажите, плиз?<br><br> <br>тот же самый код на платформе 8.1 работает корректно не ругается….»

Thorvardr

Дата регистрации: 25.02.2005
Сообщений: 3082

Лист1.Activate перед этим

Sargez

Дата регистрации: 21.10.2010
Сообщений: 247

хм….действительно помогло спасибо! интересно почему на 8.1 без активации все с рабатвлово….

Thorvardr

Дата регистрации: 25.02.2005
Сообщений: 3082

«Понятия не имею, вы как Лист1 связывали с листом книги Excel?<br>Вот проверил по быстрому, все работает без проблем:<br>Попытка<br> ExcelServer = СоздатьОбъект(«Excel.Application»);<br> РабочаяКнига=ExcelServer.WorkBooks.Add();<br> РабочийЛист=РабочаяКнига.Sheets(«Лист1″);<br> РабочийЛист.Rows(10).Select();<br> ExcelServer.Visible=-1;<br> ExcelServer=0;<br>Исключение<br> ExcelServer=0;<br> Сообщить(ОписаниеОшибки());<br>КонецПопытки;<br><br>P.S. У вас еще в коде ошибка, скорее всего. Полагаю, что ТекСтрочка у вас наверняка число и когда вы делаете:<br>ТекСтрочка+»:»+ТекСтрочка получается непонятно что. Это неявное преобразование типов, так делать нельзя, надо так:<br>»»»»+ТекСтрочка+»:»+ТекСтрочка<br>или как я привык:<br>Строка(ТекСтрочка)+»:»+Строка(ТекСтрочка)<br>а вообще, в Rows(…) можно одно число подавать, как в моем примере тут»

Показывать по
10
20
40
сообщений

  • Remove From My Forums
  • Question

  • Hello All,

    I’ve recently come across a problem with creating excel files on a particular computer. The computer in question is XP SP3 with Excel 2007. Whenever I try to create an Excel file, add sheets and change the sheet names I come across this error:

    Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX))

    What confuses me is that the same piece of code in an earlier version of the program worked perfectly fine on the computer. Not only that, but the current code that throws this error on the aforementioned system works perfectly on a machine with XP SP3 and
    Excel 2003, and another with Windows 7 and Excel 2010.

            Dim objExcel As New Excel.Application

            objExcel.Workbooks.Add()
            objExcel.Worksheets.Add()

    Code works fine up until here:

        objExcel.ActiveWorkbook.Worksheets(1).Name = «blah blah»

    My gut is telling me this is more an issue with the system than it is with the code as I’ve tried this before and on different machines and had it working perfectly. I’ve looked at the other 0x8002000B error posts and they weren’t entirely applicable to
    my specific issue.  I’m completely lost though, and would appreciate any comments or advice anyone has on this.

Answers

  • The error does not necessarily come from the index of the worksheet. It can also mean that, inernally, a value <> 0 has been passed to IDispatch::GetTypeInfo.

    Based on the line of your first post,

       objExcel.ActiveWorkbook.Worksheets(1).Name = «blah blah»

    try splitting it:  (Also add the right types with each declaration or As Object if you have option strict off.)

      Dim wb = objExcel.ActiveWorkbook
      Dim sheets = wb.Worksheets
      Dim count = sheets.count ‘if it exists
      Msgbox (count)
      Dim sheet = sheets(0)

    Does the last line throw the exception?


    Armin

    • Marked as answer by

      Wednesday, July 11, 2012 7:02 PM

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове openclipboard windows 10
  • Ошибка при входе в центр разработчиков windows phone
  • Ошибка при входе в учетную запись майкрософт windows 10
  • Ошибка при входе в профиль windows 10
  • Ошибка при восстановлении системы windows 7 0х80070002