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