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]

V mém případě porovnávám 2 soubory xls (importem do sešitu calcu ) proto přidám do komentáře 3 soubory( pracovní + 2 datové ). musí být ve stejné složce. Makro funguje max do verze 5.2.0 LibreOffice (zkoušel jsem jen české verze na českých Win7 (32 i 64) ). Fungovalo i na Linuxu, ale na tom mám nyní problém stahovat staré verze do nového systému. Na linuxu toto makro již také nefunguje.

C:\fakepath\porovnani_seznamu_orig.ods

C:\fakepath\příjem 13921.xls

C:\fakepath\výdej 13921.xls

To makrování je vytvořeno dost narychlo, takže trošku bordel, snad vám to ale pomůže nahlásit chybu správně.

Mimochodem, zkoušel jsem makro přepsat ( ten import ) do klasického executeDispatch .. ale chová se to stejně.

Po skončení běhu makra, kdy se objeví 2 prázdné listy je ve schránce obsah druhého dokumentu, stačí ctrl+v a druhý list se objeví v prázdném listu ( před spuštěním makra jsem do schránky vložil nějaký náhodný řetězec )

Díky za pomoc Milan

V mém případě porovnávám 2 soubory xls (importem do sešitu calcu ) proto přidám do komentáře 3 soubory( pracovní + 2 datové ). musí být ve stejné složce. Makro funguje max do verze 5.2.0 LibreOffice (zkoušel jsem jen české verze na českých Win7 (32 i 64) ). Fungovalo i na Linuxu, ale na tom mám nyní problém stahovat staré verze do nového systému. Na linuxu toto makro již také nefunguje.

C:\fakepath\porovnani_seznamu_orig.ods

C:\fakepath\příjem 13921.xls

C:\fakepath\výdej 13921.xls

To makrování je vytvořeno dost narychlo, takže trošku bordel, snad vám to ale pomůže nahlásit chybu správně.

Mimochodem, zkoušel jsem makro přepsat ( ten import ) do klasického executeDispatch .. ale chová se to stejně.

Po skončení běhu makra, kdy se objeví 2 prázdné listy je ve schránce obsah druhého dokumentu, stačí ctrl+v a druhý list se objeví v prázdném listu ( před spuštěním makra jsem do schránky vložil nějaký náhodný řetězec )

Přiložený soubor opraven na správný

Díky za pomoc Milan

V mém případě porovnávám 2 soubory xls (importem do sešitu calcu ) proto přidám do komentáře 3 soubory( pracovní + 2 datové ). musí být ve stejné složce. Makro funguje max do verze 5.2.0 LibreOffice (zkoušel jsem jen české verze na českých Win7 (32 i 64) ). Fungovalo i na Linuxu, ale na tom mám nyní problém stahovat staré verze do nového systému. Na linuxu toto makro již také nefunguje.

C:\fakepath\porovnani_seznamu_orig.ods

C:\fakepath\příjem 13921.xls

C:\fakepath\výdej 13921.xls

To makrování je vytvořeno dost narychlo, takže trošku bordel, snad vám to ale pomůže nahlásit chybu správně.

Mimochodem, zkoušel jsem makro přepsat ( ten import ) do klasického executeDispatch .. ale chová se to stejně.

Po skončení běhu makra, kdy se objeví 2 prázdné listy je ve schránce obsah druhého dokumentu, stačí ctrl+v a druhý list se objeví v prázdném listu ( před spuštěním makra jsem do schránky vložil nějaký náhodný řetězec )

Přiložený soubor opraven na správný

Díky za pomoc Milan

Ještě doplním opravu problematické funkce : ( vyhnutí se selectAll )

sub import_first_sheet(byref oSrcBook, byref oTarBook, byref oTarSheet)
DIM Dummy()
DIM args1(0) as new com.sun.star.beans.PropertyValue
dim dispatcher as object
dim oSrcSheet, oSrcCtrl, oTarCtrl as Object

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

oSrcCtrl = oSrcBook.getCurrentController
oTarCtrl = oTarBook.getCurrentController

oSrcSheet = oSrcBook.Sheets.getByIndex(0)

oSrcCtrl.select(oSrcSheet)
oTarCtrl.select(oTarsheet)

numRows = get_num_rows( oSrcSheet )

args1(0).Name = "ToPoint"
args1(0).Value = "A1:K"+numRows
dispatcher.executeDispatch(oSrcCtrl.Frame, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(oSrcCtrl.Frame, ".uno:Copy", "", 0, array())
args1(0).Name = "ToPoint"
args1(0).Value = "A1"
dispatcher.executeDispatch(oTarCtrl.Frame, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(oTarCtrl.Frame, ".uno:Paste", "", 0, array())
end sub