Ошибка в макросе

Автор as1234, 17 апреля 2012, 13:55

0 Пользователи и 1 гость просматривают эту тему.

as1234

Взял пример из книжки - Загрузить документ в существующий фрейм . Но чего-то не фурычит , выдает ошибку на строчке
oDoc = oFrame.LoadComponentFromUrl(s, "", 2, mArgs())

type:com.sun.star.lang.illegalargumentexception
message:url seems to be an unsupported one

Обьясните в чем дело  ???

[вложение удалено Администратором]

Hasim

Вы пытаетесь загрузить документ, которого нет на диске по указанному URL.

Hasim

И не нужно загружать в тот же самый фрейм. Это приведет к трудностям впоследствии для вашей задачи. Закроется исходный файл.
Нужно загрузить новый документ в новый фрейм, или даже можно открыть скрытым (hidden mode).

Hasim

Неудачный выбор примера для подражания.

as1234

"И не нужно загружать в тот же самый фрейм. Это приведет к трудностям впоследствии для вашей задачи. Закроется исходный файл" Эту часть предложения я понял , так как макрос испробывал ,а остальное чучуть недоходчево !))

Изучаю ooo basic да и программирование вообщем недолго , еще неделе 2 назад даже не знал как и где открыть окошко чтоб писать эти макросы )) какую литературу нашел по такой потихоньку и изучаю - если подскажете чтото более лучшее с лучшими примерами буду признателен ! =)

Hasim

Этот макрос открывает документ one.odt в отдельном окне
Sub Main
url = convertToUrl("C:\tmp\one.odt")
oDoc = StarDesktop.loadComponentFromURL(url, "_default", 0,  array() )
End Sub


Я изучал по примерам на форумах.

as1234

Спасибо ! Действительно ваш пример гораздо лучше , еще и компактней !

as1234

Решив один вопрос , сразу же образуеться другой )))

При открытии документа в отдельном окне , в нем перестают работать макросы , пишет дело в безопасности , поставил уровень безопасность макросов на "низкий" , но толку никакого ...

Hasim

#8
Чтобы заработали макросы в one.odt
Sub Main

Dim PropVal As New com.sun.star.beans.PropertyValue
PropVal(0).Name = "MacroExecutionMode"
PropVal(0).Value = 4

url = convertToUrl("C:\tmp\one.odt")
oDoc = StarDesktop.loadComponentFromURL(url, "_default", 0,  Array(PropVal()) )
End Sub


Но вам это не нужно, вам же нужно, чтобы выполнялись только макросы из исходного файла ("Действия над полями свойств пользователя.odt"), пишущие "Свойства пользователя" в целевой файл ("one.odt").

as1234

#9
Спасибо ! Все заработало после вставки "PropVal" в Array , а до этого был в недоумение и постеснялся снова спросить в чем дело ))

"Но вам это не нужно, вам же нужно, чтобы выполнялись только макросы из исходного файла ("Действия над полями свойств пользователя.odt"), пишущие "Свойства пользователя" в целевой файл ("one.odt")"  это пока не архиважно ))