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

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

Копирование листа Excel и работа с копией

Копирование листа Excel и работа с копией
Я
   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 = "";//задаем имя листа
 
 
...
КонецЦикла;
   yabes
 
3 - 24.12.12 - 16:49
(1) Ну потому что мне нужно вытащить из базы данные по всем филиалам и для каждого филиала в цикле загрузить данные на отдельный лист Excel, который создается по шаблону, который храниться в 1-м листе.
   yabes
 
4 - 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
Хм, а в чем прикол? Шаблон же надо заполнить программно. Или как?
   zladenuw
 
8 - 24.12.12 - 16:54
(0) так создай на основание шаблона новый файл и в нем уже добавляй листы
   yabes
 
9 - 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 лет назад
   yabes
 
12 - 24.12.12 - 17:23
(10) Ну не срабатывает код 
КомОбъект.Sheets(1).Copy(КомОбъект.Sheets(1));
Что я не так делаю!?

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

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

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

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