Имя: Пароль:
1C
 
Программное копирование листа между книгами Excel.
0 bvb
 
02.12.14
11:20
Погуглил. Тема не новая. Но просмотрев темы, не увидел, что проблема решена.
Вообще исходная задача такова :
В Макете печатной формы как Active Document хранится файл- шаблон Excel с двумя листами.
Нужно по каждой строке ТЧ сформировать новый файл и заполнить его (оба листа)

Задачу, как я вижу можно решать тремя способами :
1.    Получать шаблон Excel по каждой строке ТЧ затем сохраняя его
КнигаШаблонExcel = ПолучитьМакет("МойДокумент_Excel").Получить();
Заполнение ….
КнигаШаблонExcel.SaveAs(ПолноеИмяФайла);
файлы создаются но почему то пустые

2.    Скопировать лист из шаблона в книгу
ExcelApplication    = Новый COMОбъект("Excel.Application");
КнигаПриемникExcel = ExcelApplication.Workbooks.Add(1);
ЛистШаблона = КнигаШаблонExcel.Sheets(1);
ЛистШаблона.Copy(КнигаПриемникExcel.Sheets(1)); // копируем лист шаблона с указанием приемника
ExcelApplication.ActiveWorkbook.SaveAs(ПолноеИмяФайла);    
ExcelApplication.Quit();
Произошла исключительная ситуация (Microsoft Excel): Метод Copy из класса Worksheet завершен неверно

3.    Скопировать именнованную область  из шаблона в книгу
ExcelApplication    = Новый COMОбъект("Excel.Application");
КнигаПриемникExcel = ExcelApplication.Workbooks.Add(1);
ЛистШаблона = КнигаШаблонExcel.Sheets(1);
ЛистШаблона.Range("Справка_А").Copy(КнигаПриемникExcel.Sheets(1).Range("A1:D38")); // копируем именнованную область из шаблона
ExcelApplication.ActiveWorkbook.SaveAs(ПолноеИмяФайла);    
ExcelApplication.Quit();
Произошла исключительная ситуация (Microsoft Excel): Метод Copy из класса Range завершен неверно

Ни один способ не работает. Как быть ? Очень надо.
1 bvb
 
02.12.14
15:09
апну пожалуй
2 palpetrovich
 
02.12.14
15:12
как-то это режет глаз:
ЛистШаблона = КнигаШаблонExcel.Sheets(1);
ЛистШаблона.Copy(КнигаПриемникExcel.Sheets(1));
3 BAPBAP
 
02.12.14
15:27
Вроде, как-то так должно быть

КнигаШаблонExcel.Sheets(1).Copy();
КнигаПриемникExcel.Sheets(1).Paste();
4 palpetrovich
 
02.12.14
15:29
+(2)  так работает, правда не совсем то что нужно автору :)
    ExcelApplication = Новый COMОбъект("Excel.Application");
    Док = ExcelApplication.Workbooks.Open("D:\1с82\1.xls");
    ЛистШаблона = Док.Sheets(1);
    
    КнигаПриемникExcel = ExcelApplication.Workbooks.Add(1);
    ЛистШаблона.Copy(КнигаПриемникExcel.Sheets(1));
    ExcelApplication.ActiveWorkbook.SaveAs("D:\1с82\2.xls");    
    ExcelApplication.Quit();