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). |