Закрыть документ и открыть его же

Автор dimmon777, 25 октября 2015, 22:45

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

dimmon777

День добрый! Есть задумка написать макрос, позволяющий закрыть документ не сохраняя, и сразу же открыть его (что бы многократную отмену действий не делать от выполнения другого макроса)

Пока что набросал такой код :D
ЦитироватьSub CloseO
Dim vFrame as Object
 Dim oDoc as Object
  sURL = "С/ пУТЬ"
  oDoc = StarDesktop.getCurrentComponent()
  oDoc.close(true)
End Sub

Как я понимаю нужно  прописать в переменную путь потом открыть файл
ЦитироватьSub OpenO
 Dim oDesk as Object
 Dim oDoc as Object
 Dim sURL as String
 'oDesk = createUnoService ("com.sun.star.frame.Desktop")
 oDoc = StarDesktop.loadComponentFromURL (sURL, "_blank", 0, Array() )
 sURL = "С/ пУТЬ"
End Sub

rami

Цитата: dimmon777 от 25 октября 2015, 20:45Есть задумка написать макрос, позволяющий закрыть документ не сохраняя, и сразу же открыть его (что бы многократную отмену действий не делать от выполнения другого макроса)
А зачем закрывать документ ??? он что, бумажный в золотом переплёте ???
Просто, перезагрузите этот документ в текущий фрейм:
Sub ReLoadDoc  Dim oDoc, vFrame
oDoc=ThisComponent
vFrame=oDoc.getCurrentController().Frame
Dim a(0) As new com.sun.star.beans.PropertyValue
a(0).Name="MacroExecutionMode"
a(0).Value=4
vFrame.LoadComponentFromURL(oDoc.URL,vFrame.Name,0,a)
End Sub

dimmon777

Спасибо rami! ;)  Фрейм пригодится, но новое окно открывается в режиме "только для чтения"... Как  исправить??

rami

Цитата: dimmon777 от 26 октября 2015, 20:23но новое окно открывается в режиме "только для чтения"... Как  исправить??
Тогда надо добавить ещё две строчки:
Sub ReLoadDoc  Dim oDoc, vFrame
oDoc=ThisComponent
vFrame=oDoc.getCurrentController().Frame
Dim a(1) As new com.sun.star.beans.PropertyValue
a(0).Name="MacroExecutionMode"
a(0).Value=4
a(1).Name="ReadOnly"
a(1).Value=false
vFrame.LoadComponentFromURL(oDoc.URL,vFrame.Name,0,a)
End Sub


dimmon777

#4
Цитата: rami от 26 октября 2015, 20:55rami
У меня запустился со след параметрами:

a(1).Name="AsTemplate"
a(1).Value=true

Но при повторной "перезагрузке" снова выдает ошибку(((

rami

А где расположен макрос? в документе или в офисе? Я сохранил макрос в документе и он хорошо работает. После записи в документе моего последнего макроса, его нужно сохранить, иначе при перезапуске он пропадёт.

dimmon777

Цитата: rami от 26 октября 2015, 21:41А где расположен макрос? в документе или в офисе? Я сохранил макрос в документе и он хорошо работает. После записи в документе моего последнего макроса, его нужно сохранить, иначе при перезапуске он пропадёт.
Сохраняю в офисе.
Первый раз макрос срабатывает, второй раз выбивает ошибку, думаю он фрейм с таким же именем пытается создать?

rami

Попробуйте этот документ — удалите часть чисел (чтоб было заметно) и нажмите на кнопку: