Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 29. 3. 2014 10:56:14

LucasCZE
Člen
Registrace: 29. 3. 2014
Příspěvků: 5

Import souboru přes makro - VYŘEŠENO

Dobry den, uz nejakou chvili se snazim prijit na to, jak pres makro importovat urcity soubor, ale nevim si rady.

Importovany soubor muze byt ve formatu CSV, XML, HTML nebo treba i v jinem formatu. (Tedy v jednom z nich, nemusi podporovat vsechny. Nevim, ktery format je pro tento ucel nejvhodnejsi.)

V souboru budou zaznamy, ktere obsahuji ID, jmeno, datum a cas. (Cas ve formatu: libovolny_pocet_hodin:minuty:sekundy. Takze ne 0-23 hodin, ale klidne 40 hodin.)

A ja bych potreboval mit nekde v sesitu tlacitko, po jehoz stisknuti se zaznamy ze souboru importuji na dany list.

Mohl by mi nekdo prosim poradit, jak na to? V makrech se moc nevyznam a v OpenOffice uz vubec ne.

Editoval LucasCZE (30. 3. 2014 11:30:08)

Offline

#2 29. 3. 2014 11:22:31

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,527

Re: Import souboru přes makro - VYŘEŠENO

Není problém. Takových případů tady bylo řešeno už několik. Nejlépe zadejte dotaz na této stránce - karta vyhledat + vhodné heslo. Také je zde seriál od Dana Sedláčka "Malá makra" ap. To zase vyhledáte když přejdete na stránku "články" - hned vpravo je okénko s lupou.
     Jste zřejmě začátečník tak Vám pomohu alespoň s tím, že se přeptám jak to vlastně myslíte? Chcete opravdu importovat do sešitu, který máte otevřený ze směru od cizího zdroje, nebo se jedná o export do jiného souboru právě z toho sešitu, který máte otevřený?
Import - z externího zdroje do otevřeného sešitu, nebo
Export - z otevřeného sešitu do jiného (zavřeného?) dokumentu.

Editoval neutr (29. 3. 2014 11:24:42)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#3 29. 3. 2014 11:34:32

LucasCZE
Člen
Registrace: 29. 3. 2014
Příspěvků: 5

Re: Import souboru přes makro - VYŘEŠENO

V prve rade dekuji za rychlou odpoved.
V oblasti maker o office baliku obecne jsem skutecne naprosty zacatecnik.
Vazne myslim import. Mozna je matouci, ze davam na vyber v podstate jakykoliv format, ale to neni problem, protoze aplikaci, ktera data do souboru exportuje, vytvarim take ja. Takze je na mne, v jakem formatu data budou.
Jiz jsem zde na foru podobny dotaz nasel, prave ho studuji a testuji. Problem je, ze makro importovana data vlozi do noveho sesitu (snad to rikam dobre, proste se otevre nove okno). Ja potrebuji, aby se data importovala do aktualniho sesitu...

Offline

#4 29. 3. 2014 11:43:50

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,527

Re: Import souboru přes makro - VYŘEŠENO

Tak na tohle je více druhů řešení. Mimo makra lze například vložit list ze souboru (jiného Calcu), nebo vložit jako objekt DDE (OLE). To se dělá tak, že zvolíte "Vložit" > "Odkaz na externí data". Také je možné vložit OLE - což je podobná volba prakticky shodná s tou druhou variantou.
     Ta druhá varianta ale funguje téměř výlučně na HTML. Když zadáte URL do okénka, musíte ENTROVAT a dole se Vám rozbalí možnosti prvků HTML. - Lze zvolit například vše.


     Když by to bylo opravdu makro, potřebujete vědět, zda se bude importovat ze zavřeného, nebo otevřeného souboru.


     Náhodou dělám zrovna něco podobného, takže když sem dáte URL a název sešitu jak to má vypadat (na který list) a z čeho (Calc, CSV...) tak Vám to udělám.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#5 29. 3. 2014 12:17:35

LucasCZE
Člen
Registrace: 29. 3. 2014
Příspěvků: 5

Re: Import souboru přes makro - VYŘEŠENO

Z jineho Calc souboru to asi nepripada v uvahu. To by se mi generovalo o dost hure nez soucasne CSV. Idealne bych to chtel zachovat z CSV, pripadne by nebyl problem generovat XML, ale myslim, ze to situaci nijak nepomuze.


Pokud otevrenym nebo zavrenym souborem myslite CSV soubor, tak ten bude vzdy zavreny.


Tento import je jen pocatek. Sesit bude muset umet dalsi veci, ktere mi zatim nejsou uplne zname... Kazdopadne tady je sesit, se kterym prave zacinam. Zatim si to predstavuji tak, ze na prvnim listu "Akce", by melo byt tlacitko "Importovat uživatele", po jehoz stisknuti dojde k importu CSV souboru. V idealnim pripade by uzivatel nemel byt obtezovan zadnym dialogem s vyberem souboru, ale mel by se automaticky importovat CSV soubor, ktery vyhovuje urcitym pravidlum a nachazi se ve stejne slozce jako samotny sesit. A data by mela byt importovana na druhy list "Uživatelé", viz sesit...


CSV soubor se bude jmenovat napriklad takto: nejaky-text-bez-podtrzitka_uzivatele_2014-03-29_12-10-36.csv. Takovych souboru bude nekolik a ja bych potreboval, aby byl automaticky importovan nejaktualnejsi z nich (at uz podle casu vytvoreni v nazvu souboru nebo podle atributu vytvoreno ve vlastnostech souboru) a zaroven soubor obsahujici slovo "uzivatele".


Toto uz je ale dalsi problem. Kdybyste se podival na ten import, byl bych velmi rad.


Priklad CSV souboru:

1;Karel;2014-03-11;0:13:21
2;Pepa;2014-03-12;1:00:00
3;Franta;2014-03-13;65279:59:59

Offline

#6 29. 3. 2014 14:04:48

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,527

Re: Import souboru přes makro - VYŘEŠENO

Tak otestujte - dělal jsem to kvaltem a je potřeba například upravit podmínku, nebo také hned řetězec rozebrat do buněk. Pokud si s tím nebudete vědět rady - pošlu další, ale mám také co dělat. Posílám sešit s tlačítekem, soubor ve kterém se generují data - ta se pak ukládají do CSV a pro sichr ještě vlastní CSV soubor k otestování. V sešitě s tlačítkem musíte napsat správně url do makra - Takže si opravte hypertextový odkaz podle svého a přepište v makru.
Sešit s tlačítkem
Sešit s Daty
soubor Data CSV
     Jde to udělat i jiným makrem, ale stejně se to musí ladit tak jako v tomhle sešitě.


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#7 29. 3. 2014 16:49:07

LucasCZE
Člen
Registrace: 29. 3. 2014
Příspěvků: 5

Re: Import souboru přes makro - VYŘEŠENO

Dekuji! Uz mi to importuje presne jak potrebuji. Ted budu resit ten automaticky vyber nazvu souboru k importu... Ale vubec nechapu, k cemu je tam ta podminka (ani jedna z nich). Funguje to i bez ni...

Offline

#8 29. 3. 2014 18:09:07

neutr
Člen
Registrace: 8. 3. 2007
Příspěvků: 2,527

Re: Import souboru přes makro - VYŘEŠENO

Trošku jsem na to mrknul - nedalo mi to. Stáhněte si, rozpakujte a uložte přímo na C:/TěžbaDat/ - pokud to uděláte bude to funkční - úpokud tedy míte Windows - Linux má jinou syntaxi.
Adresář TěžbaDat
      Je tam i brutální vstup do makra. Výběr souboru lze udělat dialogem, nebo i automaticky, pokud víte, ře konec názvu je vzestupně (sestupně) řazen. Teda má to mouchy - musíte několikrát kliknout, než ten hloupej cyklus While dohledá. Když otevřete hyperlink - vyskočí na Vás txt Data - kde si vykopírujete do schránky nějaké ID a pak tím nakrmíte dialog který vyskočí po stisknutí tlačítka.

Editoval neutr (29. 3. 2014 18:10:25)


Pokud je Váš problém vyřešen, označte prosím svůj příspěvek za "VYŘEŠENÝ"
Zlepšíte tak orientaci na fóru při vyhledávání řešení problémů
JAK OZNAČIT TÉMA ZA VYŘEŠENÉ

Offline

#9 30. 3. 2014 10:40:28

LucasCZE
Člen
Registrace: 29. 3. 2014
Příspěvků: 5

Re: Import souboru přes makro - VYŘEŠENO

Mnohokrat dekuji. Poupravil jsem to k obrazu svemu a nyni to funguje presne jak potrebuji. Pro zjednoduseni jsem se rozhodl, ze CSV soubory budou v podadresari "uzivatele", takze staci automaticky nacist posledni ze vsech souboru v tomto podadresari a importovat ho.


Kdyby nekdo resil podobny problem, tak vyber podadresare relativne k dokumentu resim timto kodem:

If Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools") Then
  GlobalScope.BasicLibraries.loadLibrary("Tools")
End If
sFilePath = ConvertFromURL(DirectoryNameOutOfPath(ThisComponent.getURL(),"/")) & "\uzivatele\"

A vyber nejaktualnejsi verze souboru (jinymi slovy abecedne posledni soubor) takto:

sNextFile = Dir(sFilePath,0)
While sNextFile <> ""
  sFileName = sNextFile
  sNextFile = Dir
Wend

Nakonec se jen cesta k souboru slozi ze 2 promennych:

sFilePath = sFilePath & sFileName

Jeste jednou dekuji za pomoc! Bez Vas by mi to zabralo mnohem vice casu.

Editoval LucasCZE (30. 3. 2014 12:27:09)

Offline

Zápatí