Имя: Пароль:
1C
1С v8
Ошибка при вызове метода контекста (Item)
0 ЯТолько Спросить
 
09.11.18
14:39
Доброго времени суток!
При попытке выгрузить печатную форму отчета в Excel вылетает ошибка..

{ОбщаяФорма.Отчет.Форма(1030)}: Ошибка при вызове метода контекста (Item)
        ЛистДанных = КнигаExcel.WorkSheets.Item(2);
по причине:
Произошла исключительная ситуация (0x8002000b)


Часть кода

Excel.Workbooks.Open(КаталогВременныхФайлов() + "tmpxls.xls");
        tmpBook =
Excel.Workbooks.Item(Excel.Workbooks.Count);
        КнигаExcel = Excel.Workbooks.Add();
        
        ЛистТаблицы = КнигаExcel.WorkSheets.Item(1);
        ЛистТаблицы.Name = "Сводная Таблица";
        
        ЛистДанных = КнигаExcel.WorkSheets.Item(2);
        ЛистДанных.Name = "Данные";
        
        КнигаExcel.WorkSheets.Item(3).Delete();
        
        tmpBook.Sheets(1).Cells.Copy(ЛистДанных.Cells);
        tmpBook.Close();

Кто в курсе куда копать?
1 Cyberhawk
 
09.11.18
14:40
Копни в кошелек
2 ЯТолько Спросить
 
09.11.18
14:44
(1) Копал, там та же ошибка)
3 Garykom
 
гуру
09.11.18
14:45
Наверно в кошельке чего то не хватает, как и в каталоге временном.
4 hhhh
 
09.11.18
14:47
(2) лист 2 может забыл добавить?
5 Cyberhawk
 
09.11.18
14:48
(2) Так в кошельке не ошибку искать надо было
6 Cyberhawk
 
09.11.18
14:49
(4) Ага, трехарбузный ))
7 Ns33
 
09.11.18
14:55
Так обращение к листам - Sheets(1) а не Item(1)
8 Garykom
 
гуру
09.11.18
14:59
(7) .Worksheets.Item(1) = .Worksheets(1)
это эквивалентное обращение
9 ptiz
 
09.11.18
15:03
(0)
        КнигаExcel = Excel.Workbooks.Add();
        
        ЛистТаблицы = КнигаExcel.WorkSheets.Item(1);
        ЛистТаблицы.Name = "Сводная Таблица";
        
        ЛистДанных = КнигаExcel.WorkSheets.Item(2);

Откуда второй лист-то возьмется?
10 Garykom
 
гуру
09.11.18
15:29
(9) Ты еще спроси откуда третий удалится следующей строчкой ))
11 ЯТолько Спросить
 
09.11.18
15:37
(9)(10)Код не мой, я пытаюсь понять что с ним не так, т.к. сказали, что "вчера" все работало. С файлами Excel работаю редко...

А теперь как я понимаю:

КнигаExcel = Excel.Workbooks.Add(); // создает книгу

ЛистТаблицы = КнигаExcel.WorkSheets.Item(1);// добавляет лист в книгу, а именно команда WorkSheets соответственно
Item(n) присваивает значение листу или что-то не так?
12 ЯТолько Спросить
 
09.11.18
15:42
(10) Не ту часть кода скопировал...


Excel.Workbooks.Open(КаталогВременныхФайлов() + "tmpxls.xls");    
        tmpBook = Excel.Workbooks.Item(Excel.Workbooks.Count);
        КнигаExcel = Excel.Workbooks.Add();
        
        ЛистТаблицы = КнигаExcel.WorkSheets.Item(1);
        ЛистТаблицы.Name = "Сводная таблица";
        
        ЛистДанных = КнигаExcel.WorkSheets.Item(2);
        ЛистДанных.Name = "Данные";
        
        tmpBook.Sheets(1).Cells.Copy(ЛистДанных.Cells);
        tmpBook.Close();
13 singlych
 
09.11.18
15:47
Тот кто писал код, рассчитывал на то, что эксель создает новую книгу с тремя листами по умолчанию, и забыл / не знал, что это можно переопределить.

https://support.office.com/ru-ru/article/Изменение-количества-листов-в-новой-книге-2262cf3a-0fd9-475f-a9c0-690f7173e5e4
14 Garykom
 
гуру
09.11.18
15:56
(12) Код бред сумасшедшего - оно не могло ""вчера" все работало"
15 ЯТолько Спросить
 
09.11.18
16:08
(13) Код в (12)

(0)+ Подытожим по коду:

1) создаем файл:
  Excel = Новый COMОбъект("Excel.Application");

2) Определяем каталог
  Excel.Workbooks.Open(КаталогВременныхФайлов() + "tmpxls.xls");

3) создаем временный файл зачем пока не понятно  
        tmpBook = Excel.Workbooks.Item(Excel.Workbooks.Count);

4) Создаем Книгу Excel
КнигаExcel = Excel.Workbooks.Add();

5) Добавляем лист 1 и присваиваем имя
        ЛистТаблицы = КнигаExcel.WorkSheets.Item(1);
        ЛистТаблицы.Name = "Сводная таблица";

6)При попытке создать второй лист вылетает ошибка
        ЛистДанных = КнигаExcel.WorkSheets.Item(2);
        ЛистДанных.Name = "Данные";
        
7)"Ошибка при вызове метода контекста (Item)
        ЛистДанных = КнигаExcel.WorkSheets.Item(2);
по причине:
Произошла исключительная ситуация (0x8002000b)
"

Excel 2013 и у меня создается такое впечатление, что создается не книга, а лист?
16 singlych
 
09.11.18
16:10
(15) С чего ты решил, что Item создает лист? Это свойство, а не метод.
17 ЯТолько Спросить
 
09.11.18
17:14
(16) да, точно.... надо еще подумать... получается где-то создалась книга с двумя листами и программа пытается найти второй лист которого нет...
18 hhhh
 
09.11.18
17:25
(10) этот файл из 1с записан. там один лист по-любому.
19 ЯТолько Спросить
 
09.11.18
17:47
Свойство    Значение    Тип
КнигаExcel    COMОбъект    COMОбъект

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

Container    Произошла исключительная ситуация (0x800a03ec)
    
ContentTypeProperties    Произошла исключительная ситуация (Microsoft Excel): Этот документ должен содержать сведения о типах содержимого. Наличие сведений о типах содержимого является общим требованием для файлов в системе управления документами.    

DocumentLibraryVersions    Произошла исключительная ситуация: Версий этого файла не существует.    

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

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

VBProject    Произошла исключительная ситуация (Microsoft Excel): Программный доступ к проекту Visual Basic не является доверенным    

Отладчик показал ошибки....
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан