Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

8 Март 2021, 09:51 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1   Вниз
  Печать  
Автор Тема: Перезаписать файл  (Прочитано 5770 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sw_and
Новичок
*
Offline Offline

Сообщений: 2


« Стартовое сообщение: 20 Февраль 2012, 14:09 »

Сохранение документов в формате Excel 97/2003

Как сделать так чтобы он перезаписывал открытый файл ? Сейчас работает только с жестким указанием пути и имени.

Код:
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object

rem ----------------------------------------------------------------------
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = "file:///home/user/Documents/cant_save_russiansaved.xls"
args1(1).Name = "FilterName"
args1(1).Value = "MS Excel 97"

dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())

end sub
Записан
Рыбка Рио
Форумчанин
***
Offline Offline

Сообщений: 1 678


« Ответ #1: 20 Февраль 2012, 18:36 »

Вот такой макрос:
Sub Main2
Doc = ThisComponent
'If Doc.URL="" then msgbox ("Документ не сохранён",64, "Информация") : Exit Sub
Dim Ar(0) As new com.sun.star.beans.PropertyValue
Ar(0).Name="FilterName"
Ar(0).Value="MS Excel 97"
If Doc.URL="" then
Doc.storeToURL(ConvertToURL("/home/user/Documents/cant_save_russiansaved2.xls"), Ar())
Elseif Right(Doc.URL,3)<>"xls" then
Doc.storeToURL(Doc.URL+".xls", Ar())
Else
Doc.store()
Endif
End Sub


Он если файл не сохранён, то сохранит его как xls по жестко заданному пути. Если файл сохранён не как xls, то сохранит его как xls под тем же именем, но добавит ".xls" в конец. И если файл уже сохранён как xls, то пересохранит его под тем же именем.
Записан

ubuntu 12.04 + LibO3.6.0
sw_and
Новичок
*
Offline Offline

Сообщений: 2


« Ответ #2: 23 Февраль 2012, 16:41 »

должно было работать именно без фиксированного пути и имени
рабочий вариант взят отсюда http://user.services.openoffice.org/en/forum/viewtopic.php?f=20&t=48133
Цитата:
Sub SaveAsXLS
' Run this from an open spreadsheet which has been saved
'On Error goto ErrorMsg

Dim oDoc as Object, sUrl as String, sDot as String, i as Integer, _
   sPath as String
oDoc = ThisComponent : sUrl = oDoc.url : sDot = "."
If NOT oDoc.hasLocation Then
Exit Sub : End If
i = InStr ( sUrl, sDot )
sPath = ConvertToUrl ( Left ( sUrl, i ) & "xls" )

Dim aProps(2) as new com.sun.star.beans.PropertyValue
aProps(0).Name = "Overwrite"
aProps(0).Value = "True" ' existing xls version overwritten either way
aProps(1).Name = "URL"
aProps(1).Value = sPath
aProps(2).Name = "FilterName"
aProps(2).Value = "MS Excel 97"

oDoc.storeAsURL ( sPath, aProps() ) ' The xls file is open
'oDoc.storeToURL ( sPath, aProps() ) ' The ods file is open
' - an alternative to storeAsURL

'ErrorMsg:
'Msgbox "This script failed to run"

End Sub

Записан
ALexey7ov
Участник
**
Offline Offline

Пол: Мужской
Расположение: г.Мелеуз
Сообщений: 17



WWW
« Ответ #3: 9 Октябрь 2012, 13:34 »

Методом store не пробовали? Метод сохраняет все сделанные в документе изменения. Если, конечно, я правильно понял задачу. (Файл *.xls открыт --> сделаны изменения --> Файл сохранён (перезаписан) под тем же именем, что и был открыт.). ThisComponent.store()
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!