07.09.2005, 15:47 | #1 |
Участник
|
вставка знач. из Ax в Excel в именованую ячейку
Каким образом заставить Axapta не отражать ошибку при попытке определить COM объект xApplication.Range("Bookmark"), если не существует именованной ячейки "Bookmark" в шаблоне? Можно через try сделать, по крайней мере, отчет до конца дойдет, но в конце выдастся блок ошибок про неопределенные Range. Некрасиво это.
Есть идеи? |
|
07.09.2005, 16:12 | #2 |
Участник
|
У объекта Application MS Excel есть коллекция Names, в которой находится список Named Range. Перед вызовом проверяйте этот список.
__________________
Axapta v.3.0 sp5 kr2 |
|
08.09.2005, 14:23 | #3 |
Участник
|
Ну, я сделал примерно так. Метод в ComExcelDocument_RU
PHP код:
|
|
09.09.2005, 09:59 | #4 |
Участник
|
Спасибо!!!
|
|
12.09.2005, 11:20 | #5 |
Участник
|
Я немного другое решение придумал. Чтобы каждый раз не проверять в документе существование Name, я все Names загоняю в List сразу после открытия шаблона, потом уже через ф-ию inRange() проверяю имя ячейки в List.toString().
Не знаю, какой способ быстрее. PHP код:
и в ClassDeclaration объявил Str namesList; // именованые ячейки |
|
14.09.2005, 11:02 | #6 |
Участник
|
Лично мне представляется такая логика крайне некорректной. Не в смысле кода, а именно сама идея.
Чтобы метод checkCellName() отработал корректно, ты должен предварительно, отдельным процессом, запустить на выполнение метод prepareCellNamesList(). Т.е., по "правильному", необходимо принудительно запускать метод prepareCellNamesList() изнутри собственно checkCellName(), если объект namesList не заполнен. А чтобы отличить "не заполненный", от "пустого", нужна еще одна переменная, определяющая сам факт выполнения метода prepareCellNamesList() Кстати, гораздо разумнее использовать для этой цели объект-контейнер, а не символьную строку. Тогда поиска элемента - это функция ConFind() без дополнительного программирования. В общем, как-то это "коряво" организовано. Лично я просто вернул бы из метода prepareCellNamesList() полученный список (RETURN namesList) и разбирался бы с полученным списком уже во вне класса COMExcelDocument_RU Ну, и явная ошибка в методе checkCellName(). Почему, если НЕТ списка именованных ячеек возвращается true? Должно быть false. |
|
15.09.2005, 16:25 | #7 |
Участник
|
я метод prepare запускаю один раз, перед первой вставкой значения в именованную ячейку.
а вот если нет списка поименованных ячеек, я возвращаю true специально, чтобы не выполнять проверку. Идея в том, что не всегда адресация идет по поименованным ячейкам в Excel. иногда просто адресация, "A1" и т.д. Тогда надо true возвращать. ну, тут еще подумать надоть. |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|