Tak jsem objevil tohle http://flylib.com/books/en/4.290.1.141/1/ makro listing29 je myslim to co hledám. Zřejmě ale předávám špatně proměnné a hlásí mi to chybu "NoSuchElementException" a zastaví se na příkazu oSheets = oDoc.Sheets() Situace je že otvírám sešit pro vytvoření faktury,který mimo jiné obsahuje list s názvem faktury který obsahuje linky na databázi s fakturami.
Tohle je makro které tlačítkem spustí otvírání
REM ***** BASIC *****
global Dcesta as string, Dsoubor as string 'Dcesta je pracovní adresář Dsoubor volí co chci otevřít
global panfce as string
Sub Faktura 'otevřít novou fakturu
dim document as object, dokument as object, list as object
dim bunka_slozka as object, bunka_soubor as object
'if panfce="" then 'ošetřuje že lze otevřít jen jednu možnost
'panfce="faktura"
'endif
'if panfce="faktura" then
document= ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dokument=stardesktop.currentcomponent
list=dokument.sheets(0)
bunka_slozka=list.GetCellByPosition(8,35)'I36
Dcesta=trim(bunka_slozka.string)
bunka_soubor=list.GetCellByPosition(1,2)'B3
Dsoubor=trim(bunka_soubor.string)
ovladani.otevrit (""+Dcesta+""+Dsoubor+"")'Otevře sešit jako šablonu
ovladani.LinkAktu (Dcesta+"databáze/faktury.ods","faktury")'aktualizuje odkazy v listu faktury
'ovladani.otevri ("/home/tomas/distribuce/šablony/faktura.ots")
'wait 5000
'ovladani.nastav_sablonu("faktura")
'else
'msgbox("nejdříve ukončete práci na sešitu "+panfce+"",0,"PANEL")
'endif
End Sub
Odtud předávám makru LinkAktu odkaz na sešit s databází a na list faktury v právě otevřené šabloně. Zřejmě tohle jsem nepochopil a LinkAktu mám předat buď jiné parametry,nebo jiným způsobem.
Makro LinkAktu:
Sub LinkAktu(optional odkaz as string, optional list as string)
Dim oSheets 'The sheets object that contains all of the sheets
Dim oDoc
Dim oSheet as object 'Individual sheet
Dim oSheetEnum 'For accessing by enumeration
Dim s As String 'String variable to hold temporary data
Dim i As Integer 'Index variable
Dim sURL As String 'URL of the document to import
Dim oLink 'The link object
sURL = ConvertToUrl(odkaz)
oDoc = ThisComponent
oSheets = oDoc.Sheets() 'tady se to zastaví a ohlásí zmíněnou chybu
If oSheets.hasbyName(list) Then
oLink = ThisComponent.SheetLinks.getByName(sURL)
oLink.refresh()
MsgBox ("List" +list+" byl aktualizován")
Exit Sub
End If
oSheets.insertNewByName (list, oSheets.getCount())
oSheet = oSheets.getByName(list)
oSheet.link(sURL, "Sheetl", "", "", com.sun.star.sheet.SheetLinkMode.NORMAL)
End Sub
Podle seriálu o makrech od Dana Sedláčka je to po tento příkaz správně,ale taky jsem se ze seriálu dozvěděl,že chyba nemusí být tam,kde se to zastaví.
Předem dík za další nasměrování,případně za značku slepá ulice.
Editoval rejze (21. 3. 2014 10:12:34)