@neutr: Fce Nacti_Skryty a to chybějící "e" -> máte tam oArgs(1).Name="MacroExcutionMode" a má tam být oArgs(1).Name="MacroExecutionMode".
Ta smyčka se 3 opakováními namísto 366: Vysvětlím jak jsem k tomu došel :-). Jak jsem spustil makro Main tak to na mě hned vybaflo chybový msgbox z fce Nacti_Skryty takže jsem se jal zkoumat proč vlastně - a všiml si chybky v parametru "MacroExecutionMode", což ale nebyl důvod chybové hlášky.
Mimochodem před pár týdny jsem právě tento parametr zkoumal a přemýšlel jestli není nějaké bezpečnostní riziko, že se dá tímto parametrem povolit spustit makra makrem otevíranému souboru bez dotazu. Došel jsem k názoru že ne, že když povolíte souboru makra, tak nemá moc smysl blokovat to, že může otevřít jiný soubor a rovnou mu též povolit makra. Možná proto, že jsem nad tím ne tak dávno víc hloubal, tak mě jeho chybná syntaxe uhodila hned do oka :-). Ale i tak jsem to pro jistotu ověřil v Pitonyakově bibli..
Důvod chyby ale byl o řádek niž v LoadComponentFromUrl - konkrétně to oURL = ConvertToUrl(Str) 'Uvědomil jsem si že tam máte jiný formát URL. Čili jsem to překomentoval aby mi to běželo. Pak už to šlo spustit a přečetl jsem i odklikal ty msgboxy - a samozřejmě využil toho přerušovacího msgboxu. Pak jsem zkusil dát url na neexistující soubor a hned mi to hodilo další chybu z Nacti_Skryty, neboť fce getURLStruct jeho url předala k otevření i když neexistoval. Takže ještě malá úprava aby to testovalo pomocí FileExists a to když jsem pustil, tak první ukázkový soubor to samozřejmě načetlo, ale od druhého do konce smyčky už to na mě pouze plivalo hlášky "Soubor nelze načíst - zřejmě neexistuje." - už se to k tomu ukončovacímu msgboxu do fce Nacti_Skryty ani nedostalo :-). Zkusil jsem sice párkrát po stisku Esc rychle kliknout na ikonku ukončující běh makra v Basic editoru, ale to bylo beznadějné, ten msgbox nabíhal příliš rychle. Ale nakonec alespoň nezvítězila "hrubá síla" Ctrl+Alt+Del a prostě jsem holt "trpělivě" držel Esc s tím, že 366 msgboxů problikne snad rychle. Ale až tak rychlé to taky nebylo :-).
Já nemám moc v oblibě upozorňovat uživatele msgboxy. Již kdysi jste mě upozorňoval, že to je ale mnohdy užitečné s čímž souhlasím - a tak jsem se to naučil víc používat. Nicméně mě to většinou nebaví a to z důvodu, že mi nejdou kombinace a nemám je rád. A někdy se stane, že v programu může nastat několik variant na které by mohlo být vhodné upozornit uživatele nějakým msgboxem, ale vychytat kolikrát všechny ty varianty znamená naládovat tam třeba více proměnných a vícero If Then jenom pro ty různé msgboxy - a to já nerad, kor když by se někdy na nějaké upozornění hodil třeba 4 či 5-ti tlačítkový msgbox kterými však Libre nedisponuje.
Co se týká toho urychlení tak jsem to holt špatně pochopil. Já myslel že to, že to označujete za pomalé, se vztahuje k tomu testování existence souboru a jeho otevírání. Nenapadlo mě že tou pomalostí myslíte až následné načítání či zpracovávání dat z již otevřeného souboru. Ale bylo mi právě divné, že by šlo nějak zrychlit to otevírání souborů a proto jsem vznesl dotaz.
Rychlé zpracování dat je samozřejmě žádoucí a řekl bych že by mělo být mnohdy i prvořadé. S tím mám nějaké zkušenosti a dokonce i dva programátorské úspěchy - arabskou transkripci jsem v jednom případě dokázal zrychlit z asi 3 hodin na 3 minuty; a makro které mi umožňuje setřídit soubor s vyvíjeným fontem jsem z 5 minut načítání souboru a 20 minut ukládání (nyní má ten soubor asi 150tis. řádků) dokázal zrychlit asi na 15 vteřin. Obojí bylo o tom zjistit jaké a jak naparametrované funkce běží či parsují co nejrychleji. Nebylo to jednoduché, ale povedlo se. No a jak již mám trochu zkušeností s nějakými těmi "většími" daty a jejich parsováním, tak už sem kolikrát musel ukončovat přes Ctrl+Alt+Del, neboť jsem to měl právě v nějaké velké smyčce a kolikrát se zděsil z toho, jak je to oproti očekávání pomalé. Takže jsem zvyklý právě na to dělat pro ukázky rovnou spíše malé smyčky :-).
Naposledy jsem takto testoval QuickSort v Basicu (z ODT https://wiki.documentfoundation.org/Mac … Primitives; v Libre 7.1 už je z toho knihovna ScriptForge ale QuickSort tam není, je tam HeapSort) a pro 100tis. položek v poli jsem to po minutě už nevydržel a CtrlAltDel. To Calc to setřídil v pohodě během chviličky. Takže na operace s daty většího pole bude kolikrát lepší využít Calc než se snažit to dělat přímo s tím polem. Nebo jsem si říkal, že se možná pro nějaké operace s velkými poli zkusím naučit něco z Pythonu, jestli by to v něm třeba neběželo rychleji - přeci jen v Nápovědě je jak pouštět makra Pythonu/Basicu v tom druhém. Ale zatím to nepotřebuji tak ne.
Jinak jsem moc rád že jste soubor nezamkl, neb jsem se opět dozvěděl něco nového (konkrétně jsem vůbec neznal com.sun.star.util.URLTransformer a com.sun.star.util.URL). Já beru ukázky na fóru jako příklady ve kterých se klidně mohou vyskytnout chyby a nijak se vás nesnažím "osočit" z jakéhosi lajdáctví či nepořádnosti. A vůbec jsem nechtěl nějak hnidopišsky opravovat chyby, to věru ne. Nicméně proběhlo to jak jsem popsal, takže mi přišlo dobré upozornit na něco co my "neštymovalo" a doufal že se to vyjasní :-).
neutr napsal(a)nebo spíš efektivnější je klást si otázky co a proč autor opravdu chce, nebo potřebuje.
Vy jste již před lety zmiňoval že vaší zálibou je kombinatorika a je to dle mého názoru vidět na tom, jak jste schopen řešit problémy. Nicméně já se nesnažím vymýšlet co by autor dotazu mohl potřebovat, neboť jednak na to nemám ani praktické zkušenosti (přeci jen zkušenosti mám jen ze svých programátorských výtvorů); nemám na to ani znalosti (neb mě ponejvíce zajímá jen to, o čem nějak instinktivně "potuším" že by se mi mohlo dále hodit); a nemám ani čas ani chuť pouštět se do návrhu a realizace nějakého komplexnějšího systému - neb to bývá časově, znalostně i "psychicky" mnohdy strašně náročné.
Takže přemýšlím pouze nad tím, jak vyřešit dotaz; nikoliv nad tím, jak by se "celý systém" třeba dal "udělat lépe". No a vycházím také z toho, že když někdo vznese dotaz na fóru, tak to bude většinou znamenat, že neumí moc programovat. Kdyby programovat uměl, tak si to předpokládám spíše namakruje sám. No a když někdo neumí moc programovat, tak to pro mě také znamená, že mu tak snadno nepůjdou ani různá "komplexnější" řešení + že na jejich naučení a zrealizování stejně nejspíš nebude mít čas :-). Proto nad možnými "vylepšeními systému uživatele" ani nepřemýšlím - neb beztak bych prostě nebyl schopen (ani ochoten) se na jejich vzniku více podílet, skutečně mám dost práce se svými vlastními výtvory.
Prosím nezamykejte ty ukázky i když nejsou třeba úplně odladěné nebo estetické. Dá se kolikrát zjistit něco nového i když třeba z hlediska tématu to nic nového spíše neevokuje :-). Už i váš postřeh o tom, že je rychlejší načíst seznam souborů z adresáře než testovat existenci všech souborů ze seznamu stojí za to. Kdybyste to měl zamčené, tak bych to při chybě nejspíš ignoroval a nechal být a "námitku" nevznesl - a pak by třeba ani tento zajímavý postřeh nemusel "vyplout na povrch" - nebo by "vyplul" třeba až po nějakém vyčerpávajícím pokus/omyl :-).
Myslím že nyní je to nejspíš vyjasněné :-).