Имя: Пароль:
1C
1С v8
Копирование листа Excel и работа с копией
0 yabes
 
24.12.12
16:40
Здравствуйте! У внешней обработки определил макет Active document, указал макету путь к файлу с шаблоном Excel.
Написал код:
Макет = ПолучитьМакет("Макет");
КомОбъект = Макет.Получить();
Шаблон = КомОбъект.WorkSheets(1); //Шаблон - это первый лист

Теперь мне нужно в цикле создавать копию шаблона после листа шаблона и работать с листом. Как это сделать?
Нашел справку:
Worksheets(1).Copy(Before, After)
Параметры:
Before — Лист, перед которым будет помещен скопированный лист.
After — Лист, после которого будет помещен скопированный лист.
Комментарии:
Вы не можете определить Before , если Вы определяете After и на оборот.

Но у меня не получилось применить! Как создать копию шаблона и получить на него ссылку для дальнейшей работы?
1 Длинный Клиент
 
24.12.12
16:41
а зачем копировать лист Эксель ?
2 Длинный Клиент
 
24.12.12
16:46
Excel = СоздатьОбъект("Excel.Application");
...
Пока ... Цикл
...
Excel.WorkSheets().Copy(Excel.WorkSheets(1)); //копируем содержимое первого листа в текущий

Excel.WorkSheets(1).Name = ""; //задаем имя листа

...
КонецЦикла;
3 yabes
 
24.12.12
16:49
(1) Ну потому что мне нужно вытащить из базы данные по всем филиалам и для каждого филиала в цикле загрузить данные на отдельный лист Excel, который создается по шаблону, который храниться в 1-м листе.
4 yabes
 
24.12.12
16:52
(2) Это я уже видел, но что-то не заработало!
5 Длинный Клиент
 
24.12.12
16:52
(3) а, понял, я просто обычно прайсы гружу из экселя на кучу строк и использую ADODB для скорости, а тут, для заполнения шаблонов, наверное, правильно стандартные методы использовать. Поиск по мисте "Worksheets(1).Copy(" дает какие-то результаты, не впервой, видимо, задача.
6 Длинный Клиент
 
24.12.12
16:53
Сейчас попробую тоже
7 Галахад
 
гуру
24.12.12
16:54
Хм, а в чем прикол? Шаблон же надо заполнить программно. Или как?
8 zladenuw
 
24.12.12
16:54
(0) так создай на основание шаблона новый файл и в нем уже добавляй листы
9 yabes
 
24.12.12
17:08
(7)(8) Шаблон ("Лист1") у меня заполнен начальством! Там какая-то таблица, много формул и т.д. Мне нужно просто заполнить некоторые ячейки, а остальные сами посчитаются! На данный момент у меня работает обработка, которая вытаскивает данные по одному филиалу, обращается к макету и заполняет его данными и открывает книгу Excel для просмотра. Но теперь надо этот "Лист1" использовать как шаблон и для каждого филиала создать свой лист, скопировать туда "Лист1" и заполнить данными. Мне просто нужен код, который создаст новый лист копированием "Листа 1" и даст на него ссылку, чтобы я мог заполнять ячейки!
10 Длинный Клиент
 
24.12.12
17:17
11 Длинный Клиент
 
24.12.12
17:17
8 лет назад
12 yabes
 
24.12.12
17:23
(10) Ну не срабатывает код
КомОбъект.Sheets(1).Copy(КомОбъект.Sheets(1));
Что я не так делаю!?

Это же тоже самое что у них:
Before = Excel.Sheets(2) ;
Excel.Sheets("Лист3").Copy(Before);

Но у меня не работает!
13 Dimel
 
25.12.12
05:24
Выдрал из своего кода:
Excel = Новый COMОбъект("Excel.Application");
WorkBooks = Excel.WorkBooks.Open(ИмяФайлаТабеля);
//Получим первый лист
ExcelЛист = WorkBooks.Sheets(1);
               WorkBooksУсловныеОбозначения = Excel.WorkBooks.Open(ИмяФайлаУсловныеОбозначения);
               ExcelЛистУсловныеОбозначения = WorkBooksУсловныеОбозначения.Sheets(1);
НомерЛиста = ExcelЛист.Index;
//Copy(Before, After)
WorkBooksУсловныеОбозначения.Worksheets(ExcelЛистУсловныеОбозначения.Name).Copy(,ExcelЛист);
WorkBooks.Worksheets(НомерЛиста+1).Name = "Условные обозначения";
WorkBooksУсловныеОбозначения.Close();

Открывает 2 экселевских файла и загоняет в одну книгу
14 yabes
 
25.12.12
20:09
(13) Спасибо большое, завтра попробую!
15 Dimel
 
26.12.12
02:50
(14) Там бывает что ярлычки листов прячутся - может в этом проблемма?

//бывает после сохранения прячутся наименования предыдущих листов
Excel.ActiveWindow.DisplayWorkbookTabs = 1;
Excel.ActiveWindow.TabRatio = 0.5;
WorkBooks.Save();
//Закроем книгу
Excel.WorkBooks.Close();
16 yabes
 
28.12.12
11:38
ОШИБКА ВОЗНИКАЕТ когда я пользуюсь макетом Excel, загруженным в обработку. Если просто обращаться к файлу эксель, то там все нормально копируется. а так возникает ошибка: "Произошла исключительная ситуация (Microsoft Excel): Метод Copy из класса Worksheet завершен неверно". Как ее обойти?
Закон Брукера: Даже маленькая практика стоит большой теории.