|
Копирование листа 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 завершен неверно". Как ее обойти?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |