Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

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

Ошибка при вызове метода контекста (Item)
Я
   ЯТолькоСпросить
 
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(); 

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

Откуда второй лист-то возьмется?
   Garykom
 
10 - 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();
   singlych
 
13 - 09.11.18 - 15:47
Тот кто писал код, рассчитывал на то, что эксель создает новую книгу с тремя листами по умолчанию, и забыл / не знал, что это можно переопределить.

https://support.office.com/ru-ru/article/Изменение-количества-листов-в-новой-книге-2262cf3a-0fd9-475f-a9c0-690f7173e5e4
   Garykom
 
14 - 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 и у меня создается такое впечатление, что создается не книга, а лист?
   singlych
 
16 - 09.11.18 - 16:10
(15) С чего ты решил, что Item создает лист? Это свойство, а не метод.
   ЯТолькоСпросить
 
17 - 09.11.18 - 17:14
(16) да, точно.... надо еще подумать... получается где-то создалась книга с двумя листами и программа пытается найти второй лист которого нет...
   hhhh
 
18 - 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 не является доверенным    

Отладчик показал ошибки....

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует