Já Vám rozumím. Zdrojový sešit se musí uložit na začátku této rutiny.
Sub SaveAs
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Dim sVar as string
Dim iVar as integer
Doc = ThisComponent
ThisComponent.store() ' Uložit už můžete tady nebo kdekoliv před storeAsURL
Sheet = Doc. Sheets (0) ' 1. list v sešitě (lze deklarovat jménem
Cell = Sheet. getCellRangeByName("R2") 'Lze deklarovat číslem Sloupec, řádek
sVar = Cell.string
'--------------------------upravený kód od Pythoniaka deklarace
Dim args(0) As New com.sun.star.beans.PropertyValue
Dim sUrl As String
sUrl = ConvertToUrl(sVar)
args(0).Name = "Overwrite" 'This property is defined in Table 107
args(0).Value = True 'Do not overwrite an existing document.
'--------------------------Vsuvka pro tlačítko s dotazem
iVar = MsgBox("Naozaj chcete pokladničnú knihu vypnúť?",4,"Uložiť a zavrieť")
If iVar = 7 Then
Exit Sub
Else
ThisComponent.store() 'až sem - tady můžete ještě uložit původní dokument
ThisComponent.storeAsURL(sUrl, args()) 'Tady už dostane dokument jiné jméno a polohu
End IF
Doc.Close(True)
End Sub
Je to jen jednoduché store bez argumentů - ale musí se někdy ukládat s návratem do původního sešitu. To je maličko složitější. Já nyní nejsem doma a tak to nemohu otestovat. Je to ale nějak takto :
Sub SaveAs
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Dim sVar, s Val as string
Dim iVar as integer
Doc = ThisComponent
sVal = Doc.URL
Sheet = Doc. Sheets (0) ' 1. list v sešitě (lze deklarovat jménem
Cell = Sheet. getCellRangeByName("R2") 'Lze deklarovat číslem Sloupec, řádek
sVar = Cell.string
'--------------------------upravený kód od Pythoniaka deklarace
Dim args(0) As New com.sun.star.beans.PropertyValue
Dim sUrl As String
sUrl = ConvertToUrl(sVar)
args(0).Name = "Overwrite" 'This property is defined in Table 107
args(0).Value = True 'Do not overwrite an existing document.
'--------------------------Vsuvka pro tlačítko s dotazem
iVar = MsgBox("Naozaj chcete pokladničnú knihu vypnúť?",4,"Uložiť a zavrieť")
If iVar = 7 Then
Exit Sub
Else
ThisComponent.storeAsURL(sURL, args())
'-------------------------
ThisComponent.storeAsURL(sVal, args()) 'Tady se to uloží zpět pod původním jménem
End IF
Doc.Close(True) 'Když tohle vynecháte budete stále v původním dokumentu
End Sub
Jde o to, že uživatel je pak zmatený. Takže když to uložíte do původního místa, můžete vynechat Doc.Close a jste pořád jakoby v tom původně otevřeném sešitě. Ale tohle dělám z paměti - bez testu takže nevím jestli tam není něco špatně.
Argumenty se dají vynechat, ale kvůli čitelnosti kódu by se mělo místo deklarace "args, arg a podobně" použít slovo Dumy - to se musí deklarovat jako array tedy Dim Dumy(). To se pak dosadí místo args. Když půjde někdo do kódu po Vás tak bude zběsile hledat kde jsou "args" deklarované. Takhle zběhlejší programátor ví že nic hledat nemá.
Editoval neutr (16. 2. 2018 08:28:00)
Moje e-mailová adresa
Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte orientaci při vyhledávání řešení JAK OZNAČIT TÉMA ZA VYŘEŠENÉ