08.05.2007, 08:42 | #1 |
Участник
|
Вставка рисунка в колонтитул Excel
Добрый день.
Уважаемые, не сталкивался ли кто-нибудь с задачей вставки рисунка в колонтитул Ёкселя? В самом Ёкселе макрос по вставке рисунка работает. Перенесенный в Аксапту работать перестает. Версия Аксапты 3.0 SP4 X++: COM PageSetup, PSHeader, PSHeaderPicture; Sheet = EXA.activeSheet().comObject(); PageSetup = Sheet.PageSetup(); PSHeaderPicture = PageSetup.LeftHeaderPicture(); PSHeaderPicture.FileName("C:\\Faxmile.bmp"); // PSHeaderPicture.FileName(legalEntityTable.LogoHeaderPath); info(PSHeaderPicture.FileName()); PageSetup.LeftHeader("&[Рисунок]"); //PageSetup.LeftHeader("&G"); |
|
08.05.2007, 15:08 | #2 |
Участник
|
В результате упражнений с проблемой выяснилось, что при вставке подобным образом рисунка в неруссифицированный Ёксель (естественно, используя не [Рисунок], &G) - все работает корректно. Т.е., видимо, проблема с передачей управляющих слов на русском в Ёксель. Попробовал программно переключать раскладку - без успеха.
Может есть у кого-то какие-нибудь соображения по этому поводу? |
|
08.05.2007, 15:28 | #3 |
Участник
|
а через COMDispFunction
|
|
08.05.2007, 16:04 | #4 |
Участник
|
Спасибо за идею. Попробовал.
К сожалению, результат тот же, т.е. - отрицательный |
|
08.05.2007, 16:25 | #5 |
Участник
|
Работает ли это из других программ (VB, JS)
|
|
08.05.2007, 16:27 | #6 |
Участник
|
и еще - что получится если вставить ручками а потом программно прочитать свойство?
|
|
08.05.2007, 16:59 | #7 |
SAP
|
Ну рас макросом работает то можно просто макрос и запускать
метод класса ComExcelDocument_RU X++: void runMacros(MSOfficeBookMark_RU _bookMark, boolean _wrapText, str _nameMacros, int _workSheetNumber = 1) { COM comRange; COM comApplication; ; comRange = this.findRange(_bookMark,_workSheetNumber); if (comRange) { comRange.activate(); comApplication = m_comDocument.application(); comApplication.run(_nameMacros); } } |
|
08.05.2007, 20:20 | #8 |
Moderator
|
Если макрос существует в шаблоне, то да. Но если в шаблоне существует заранее сохраненный макрос для вставки картинки в колонтитул, то почему бы тогда без всяких сложностей не иметь в шаблоне просто заранее вставленную в колонтитул картинку?
Хотя, конечно, может иметься желание вставлять в колонтитул разные картинки в зависимости от некоторых условий. Тогда - да, заранее созданный макрос в шаблоне и передача имени файла картинки как параметра из Axapta в Excel при вызове Application.Run (вопрос взаимодействия с Excel в стиле Axapta программирует Excel на VBA, насколько я понимаю, пока не рассматривается). |
|
09.05.2007, 10:24 | #9 |
Участник
|
Насчет запуска макроса из Аксапты идея не прошла.
Макрос: ActiveSheet.PageSetup.RightHeaderPicture.Filename = "C:\Faxmile.bmp" ActiveSheet.PageSetup.LeftHeader = "&G" запущенный из Ёкселя, работает корректно и вставляет в параметры страницы "&[Рисунок]". Тот же макрос, запущенный из Аксапты, вставляет в параметры страницы уже "&G", что в русском Ёкселе нифига не работает. Т.е. исполнение одно и того же макроса в Ёкселе и из Аксапты работает по разному механизму. |
|
09.05.2007, 10:31 | #10 |
Участник
|
А вот идея насчет чтения заранее вставленного колонтитула дала неожиданный результат. В Аксапте колонтитул "&[Рисунок]" был прочитан как "&О" (амперсант + русская буква О). Таким образом, если идет вставка в английский Ёксель, следует писать "&G", если в русский - "&О".
Я, правда, решил немного схитрить. Чтоб не заморачиваться с определением версии Ёкселя, я вставил в шаблоне в центральный колонтитул маленький рисунок с пустым белым полем. При формировании файла, я читаю оттуда значение колонтитула и переписываю его в левый колонтитул. Вот. Т.е. такое решение, меня в принципе устраивает. Большое спасибо за идеи и участие. |
|
|
За это сообщение автора поблагодарили: Gustav (2). |
09.05.2007, 10:35 | #11 |
Участник
|
Сегодня 9 мая.
Пользуясь случаем, поздравляю с этим праздником всех нас. Как показала практика, вместе мы победим любую проблему! |
|