Stránky dotazů a odpovědí české a slovenské komunity uživatelů kancelářského balíku LibreOffice (více informací)

Zeptejte se

Historie revizí [zpět]

makro copy paste v calcu

Zdravíčko, narazil jsem na podivný problém.

Před léty jsem psal pro kolegyni makro na automatické načtení dvou sešitů ( každý z jiného souboru ) do jednoho sešitu .. a pak nějaké operace s tím. Pracovala na stařičkém PC s XP. Teď má novou mašinku, a makro nefunguje. Dlouhým bádáním jsem zjistil, že volání uno:paste tiše selže.

Procházel jsem web, hledal na googlu, žádné řešení jsem nenašel. Máte někdo s tím zkušenost? Jak to znovu rozchodit ?

Makro má tuto funkci, která v kroku paste nedělá nic ( jak jsem zjistil - poslední verze,. kde ještě funguje je LOO 5.2.0 ) :

sub import_first_sheet(byref oSrcBook, byref oTarBook, byref oSheet)
  dim Dummy()
  oTarBook.getCurrentController.Select(osheet)
  oSrcBook.getCurrentController.select(oSrcBook.Sheets.getByIndex(0))
  dispatchURL(oSrcBook,".uno:SelectAll")
  dispatchURL(oSrcBook,".uno:Copy")
  oTargetCell = oSheet.getCellByPosition(0,0)
  oTarBook.getCurrentController.Select(TargetCell)
  dispatchURL(oTarBook,".uno:Paste")
  oSrcBook.Close(True)  
end sub

tuto funkci jsem obšlehl někde na netu kdysi dávno, byla součástí makra kopírujícího celý list do jiného sešitu, nevím jak funguje ale tehdy to fungovalo

Sub dispatchURL(document, aURL)
  Dim noProps()
  Dim URL as new com.sun.star.util.URL
  frame = document.getCurrentController().getFrame()
  URL.Complete = aURL
  transf = createUnoService("com.sun.star.util.URLTransformer")
  transf.parseStrict(URL)
  disp = frame.queryDispatch(URL, "", com.sun.star.frame.FrameSearchFlag.SELF OR com.sun.star.frame.FrameSearchFlag.CHILDREN)
  disp.dispatch(URL, noProps())
End Sub

Díky za každé popostrčení. Milan