|  20.11.2008, 15:04 | #1 | 
| Участник | Копирование листов в Excel с шаблоном 
			
			Добрый день всем! Подскажите, пожалуйста, как возможно в Axapta 3.0 при формировании Печатной формы множить листы рабочей книги в Excel'е? Причем заранее неизвестно, сколько именно листов будет в конечном итоге. Другими словами, в зависимости от выполненных условий, заполняются листы, начиная с первого, при этом все последующие листы (если нужно) должны вставляться Axapta и должен копироваться шаблон с первого листа. И, соответственно, заполняться. Заполняться-то он заполняется, но вот ни формат ячеек, ни фиксированные значения полей, не говоря уже о рамочках, - одним словом, шаблон - не копируется... Пыталась разобраться самостоятельно, но - увы! - ничего не получается... Если можно, помогите, пожалуйста! Спасибо всем заранее!!! | 
|  | 
|  20.11.2008, 15:11 | #2 | 
| Сенбернар | 
			
			Range("A1").Select Sheets("Лист1").Select Selection.Copy Sheets("Лист2").Select Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Это в Екселе так. Ключевое слово - Специальная Вставка... Ну, а раз в Екселе можно, то и из Аксапты (в Екселе же  ) - тоже можно... 
				__________________ Best Regards, Roman | 
|  | 
|  20.11.2008, 15:19 | #3 | 
| Участник | 
			
			Роман, спасибо! НО весь вопрос в том и заключается, как это можно сделать в Аксапте... Идея мне кажется ясной, но вот пример синтаксиса, да еще такого, чтоб работал, я найти не могу... Если же делать через Макрос в Excel'е, то непонятно, как записывать именно столько листов, сколько раз выполняется условие. И именно через один (т. е. 1, 3, 5, ...). Поскольку я в макрос залезла третий раз в жизни, то у меня была надежда, что это все можно проще провернуть через Axapta...   | 
|  | 
|  20.11.2008, 15:29 | #4 | 
| MCTS | 
			
			А просто запускайте сам макрос  Excel+Com+Macros
		 Последний раз редактировалось Eldar9x; 20.11.2008 в 16:02. | 
|  | 
|  20.11.2008, 15:33 | #5 | 
| MCT | 
			
			Посмотрите оставшийся в живых в трешке класс ComExcelDocument_RU, там что ни метод то портация из VB в X++
		 
				__________________ Axapta book for developer | 
|  | 
|  20.11.2008, 15:39 | #6 | 
| Сенбернар | 
				__________________ Best Regards, Roman | 
|  | 
|  20.11.2008, 15:40 | #7 | 
| MCTS | 
			
			Кстати можно проще: Sheets("Лист1").Select Sheets("Лист1").Copy After:=Sheets(2) | 
|  | 
|  20.11.2008, 15:42 | #8 | 
| Участник | 
			
			Да простит меня автор кода, я честно проверил его работоспособность   X++: void copyWorkSheet(anyType _sheetToCopyID, anyType _sheetAfterID) { COM sheetToCopy; COM sheetAfter; ; sheetToCopy = this.getWorkSheet(_sheetToCopyID); if (_sheetAfterID) sheetAfter = this.getWorkSheet(_sheetAfterID); if (sheetToCopy && sheetAfter) { sheetToCopy.copy(sheetAfter); } } X++: static void Job41(Args _args) { ComExcelDocument_RU excel = new ComExcelDocument_RU(); ; excel.newFile("C:\\test.xlsx"); excel.visible(true); excel.copyWorkSheet(1, 2); } | 
|  | |
| За это сообщение автора поблагодарили: Zoe (1), decoder (1). | |
|  20.11.2008, 15:50 | #9 | 
| Moderator | 
			
			Вот еще темка до кучи: Копирование листов в Excel Кстати, она болтается в "Похожих темах" к этой. Так что не пренебрегаем смотреть в низ страницы, не пренебрегаем! P.S. Цитата:  Метод insertSheet есть в слое dis, так что, наверное, должен быть у всех. У меня дата изменений класса на слое dis - 15.02.2005 (DAX 3.0, SP4). | 
|  | |
| За это сообщение автора поблагодарили: Lemming (1). | |