Имя: Пароль:
1C
 
Добавление листов в Excel. Помогите, пожалуйста, кто знает!
0 VladikЯ
 
14.09.09
17:06
Нужно выгрузить 3 таблицы в Эксель, т.е. чтобы создалась книга с 3 листами. Книгу-то создаю с данными 1-го листа, а вот следующие листы что-то не идут. Код у меня такой (пока с 2 листами):

Процедура ВЭксель(Таб,Таб2,ИмяФайла="")
       Книга = Excel.WorkBooks.Open(ИмяФайла);
       Книга.Записать(?(ПустоеЗначение(ИмяФайла)=0,ИмяФайла,КаталогПользователя()+"Файл_начислений_01120.xls"),"XLS");
       Excel.Visible=1;      
       Лист1 = Книга.WorkSheets(1);
       Область=Таб.Область(1,1,Таб.ВысотаТаблицы(),Таб.ШиринаТаблицы());
       Область.ВысотаСтроки(12);                
       Лист2 = Книга.WorkSheets.Add;
       Область2=Таб2.Область(1,1,Таб2.ВысотаТаблицы(),Таб2.ШиринаТаблицы());
       Область.ВысотаСтроки(12);                
       Лист1.Activate();
       Лист2.Activate();
КонецПроцедуры

Подскажите, что не так?!
1 ТелепатБот
 
гуру
14.09.09
17:06
2 smaharbA
 
14.09.09
17:11
Лист2 = Книга.WorkSheets.Add(Лист1);

а что не получается ?
3 VladikЯ
 
14.09.09
17:13
Ну, когда у меня добавляется 2-й лист (Лист2 = Книга.WorkSheets.Add;), то при открытии книги его нет. Только 1-й лист с данными, а второго листа нет.
4 Альберт_Уфа
 
14.09.09
17:16
(3) обычно листы не видны при создании из 1с.
5 VladikЯ
 
14.09.09
17:23
Ну да. Я вижу только 1 лист. Точнее, ярлычка не вижу, только данные, которые должны быть рна первом листе. Вы хотите сказать, что надо открыть ярлычки? А программно из 1С этого не сделать?
6 smaharbA
 
14.09.09
17:32
Книга.Windows.Item(1).DisplayWorkbookTabs=-1;
7 Альберт_Уфа
 
14.09.09
17:47
(5) ну как вариант открыть ярлыки. они на самом деле есть, что-то нужно сдвинуть и ярлыки будут видны.
8 smaharbA
 
14.09.09
17:50

Книга.Windows.Item(1).DisplayWorkbookTabs = -1;
Книга.Windows.Item(1).TabRatio = 0.5;
9 VladikЯ
 
14.09.09
18:02
Хорошо. Спасибо. Сейчас всё попробую.
10 Torquader
 
14.09.09
18:32
А Excel откуда появляется ?
Кроме того, когда мы открываем файл Excel, то надо проверить, что в нём только один лист, а не несколько - иначе можно так надобавляться, что никто и не найдёт последние добавленные листы.
11 VladikЯ
 
14.09.09
18:59
Ну, Экселья создаю
       Excel = СоздатьОбъект("Excel.Application");

Но вот что-то стало выбивать ошибку выражение

       Excel.WorkBooks.SaveAs(ИмяФайла,1);
при попытке создать файл в катклоге (ИмяФайла), хотя в отладчике путь прописывается правильно....
12 Torquader
 
14.09.09
19:14
Имя файла - строка фиксированной длины, а пробелы кто-то забыл с конца удалить.
13 VladikЯ
 
14.09.09
19:53
Понял. СокрЛП() надо...
14 smaharbA
 
15.09.09
05:42
(12) фигня, (11) ха это по башке линейкой надо и почаще
15 VladikЯ
 
15.09.09
14:00
(14) Слава богу, что не ты мой учитель....
Вобщем, кому интересно, проблемку решил так, работает:

       Excel.Visible=1;      
       Excel.DisplayAlerts=0;
       Excel.WorkBooks.Add();
       Книга = Excel.WorkBooks.Item(1);

       Лист1 = Книга.WorkSheets(1);
       Лист1.Name = "Title1";

       Лист2 = Книга.WorkSheets.Add;
       Лист2.Name = "Title1";

Но вот, правда, ещё проблемка: по умолчанию Excel добавляет листы в начало, а надо бы в конец, т.е после последнего листа. Пробовал так (как пишет макрос):

   Книга.WorkSheets.Add After:=Книга.WorkSheets(Книга.WorkSheets.Count)

но 1С на слово "After" ругается всякий раз, хотя контекстом я манипулировал по-разному (напр., Книга.WorkSheets.Add(,After) )
Может, кто знает, в чём тут дело?
16 dk
 
15.09.09
14:05
Excel.WorkBooks.Add();
       Книга = Excel.WorkBooks.Item(1);
---
розги и на горох )))
----
лист4 = Книга.WorkSheets.Add("",Книга.WorkSheets(3));
как-то так
17 Rie
 
15.09.09
14:05
(15) 1С не знает именованных параметров.
Посмотри в справке по VBA, на каком месте этот параметр стоять должен.
18 VladikЯ
 
15.09.09
14:41
(16) Как-то так не катит, вылетает ошибка с указанием на строку (я пытался по аналогии добавить 2-ой лист к первому)

       Лист2 = Книга.WorkSheets.Add("",Книга.WorkSheets(1));

P/S. на горох меня надо?
19 dk
 
15.09.09
18:16
угу, тебя на горох
---
Лист2 = Книга.WorkSheets.Add(,Книга.WorkSheets(1));
или
Лист2 = Книга.WorkSheets.Add(0,Книга.WorkSheets(1));
20 smaharbA
 
15.09.09
18:17
(19) не канает
21 dk
 
15.09.09
18:18
(20) точна?
22 smaharbA
 
15.09.09
18:20
(21) да
23 dk
 
15.09.09
18:34
блиннн, ну могет быть
---
ну тогда можно извратиться с Move