Взаимодействие с диалоговыми окнами Calc

Автор ArVorozh, 18 января 2017, 20:01

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

ArVorozh

При написании макроса столкнулся с проблемой, что при сохранении файла в CSV появляется модальное окно и выполнение макроса приостанавливается, пока не нажмёшь "ок". Каким образом можно такие окна средствами макроса закрыть и вообще как с диалогами, созданными не самим макросом, а либрой, взаимодействовать?


JohnSUN

Ну, если макрос записать правильно, то у офиса вопросов не возникнет.
Как правильно писать в CSV-файл можно посмотреть у Питоньяка, или здесь

(Забавно... На форуме пошла полоса вопросов, на которые были даны ответы пять лет назад)
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

rami

Цитата: JohnSUN от 18 января 2017, 18:17Забавно... На форуме пошла полоса вопросов, на которые были даны ответы пять лет назад
Пиши макрос прибавляющий 5 лет к старым ответам ;D ;D ;D

ArVorozh

ну, видимо, через диспатчер- это не очень правильно :)
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
PathUMI = ConvertToURL(Mid(ConvertFromURL(ThisComponent.url),1,inStr(ConvertFromURL(ThisComponent.url),".xls")-1) + ".csv") 'получаем путь для сохранения- конвертируем из юрла и тайтла текущего файла, вынимаем текущую папку при помощи mid и instr и добавляем файлик потом конвертируем обратно в юрл.
dim exportParam(2) as new com.sun.star.beans.PropertyValue
exportParam(0).Name = "URL"
exportParam(0).Value = PathUMI
exportParam(1).Name = "FilterName"
exportParam(1).Value = "Text - txt - csv (StarCalc)"
exportParam(2).Name = "FilterOptions"
exportParam(2).Value = "59,34,34,1,,0,true,true,false,false"
dispatcher.executeDispatch(ThisComponent.CurrentController.Frame, ".uno:SaveAs", "", 0, exportParam())

завтра утром на свежую голову сделаю по человечески через ThisComponent.storeToURL.
Каким-то образом упустил книгу версии 3.0 - огромное спасибо за наводку.

ArVorozh

Цитата: rami от 18 января 2017, 20:36
Пиши макрос прибавляющий 5 лет к старым ответам ;D ;D ;D
Возможно, кто-то уже написал такой для вопросов))