WWW pro školy
Jak na Office - tutoriály, video návody











Vytvoř si párové triko

Poradna - Prenos dát z formuláru Excel do databázy Excel

hlavní kategorie | zpět | + odpovědět na toto téma
Prenos dát z formuláru Excel do databázy Excel - diskuze na toto téma
Ahoj, potreboval by som pomôcť s prenosom dát z formuláru vytvoreného v excely do iného súboru excel ktorý by slúžil ako databáza. Názov vstupného súboru s formulárom sa mení, databázový súbor je jeden. Do databázy sa teda budú kopírovať len vybrané bunky zo zdrojových formulárov, ktoré majú majú rôzny názov súboru, ale rovnakú štruktúru. Napr. stále budem kopírovať bunku G12 z formuláru do stĺpca B v databáze, H18 do stĺpca C,... Každý nový formulár sa nahrá na prvý voľný riadok v databáze. Rozmýšľaľ som nad Makrom, ale vraj by to šlo aj cez Nepriamy odkaz. Neviem si však s tým rady.

Ludo | 13.6.2016 15:09  
 
 
Príklad formulára. Používajú so v ňom zlúčené bunky, ktoré sa majú prenášať.
Odpověď
Ludo | 13.6.2016 15:13  
 
 
Dáta sa ukladajú do tejto databázy....
Odpověď
elninoslov | 14.6.2016 09:27  
 
 
Napr. ?
Odpověď
Ľudo | 14.6.2016 17:38  
 
 
ďakujem je to super. Je niečo také možné urobiť aj obrátene. Aby to makro nebolo vo formulári, ale v databáze. Formulár obieha po rôznych PC. Niektorí používajú OpenOfice prípadne iné programy. Databáza je stále na jednom mieste a s tou sa nehýbe, otvára sa vždy len v MS Office. Obávam sa, že by to makro takto mohli poškodiť/vymazať a potom by mi to nefungovalo.
Odpověď
elninoslov | 14.6.2016 20:03  
 
 
Tak to nepôjde. Neviem si predstaviť, ako by mohol zatvorený zošit (databáza) vedieť o presúvaných, premenovávaných, a na rôznych kancelárskych bálíkoch otváraných súboroch, ktoré o svojom otvorení ani nemôžu dať nikomu vedieť (lebo musia byť bez makra). To je čisto nereálne.
Odpověď
Ludo | 14.6.2016 21:30  
 
 
V databaze by mohol byt novy stlpec kde by bola pre dany zaznam napr.definovana cesta k ulozenemu formularu. Radili mi ze to mamm takto urobit cez nepriamy odkaz. Len mi nepovedali ako a sam si s tym neviem rady. Databazova tabulka moze mat akukolvek formu alebo obsah. Nie je to definovane striktne ze len takto. A vsetko sa to nakoniec nachadza ulozene na jednom mieste. Databaza je v hlavnom adresary a formulare sa ukladaju do podadra.
Odpověď
Ludo | 14.6.2016 21:30  
 
 
V databaze by mohol byt novy stlpec kde by bola pre dany zaznam napr.definovana cesta k ulozenemu formularu. Radili mi ze to mamm takto urobit cez nepriamy odkaz. Len mi nepovedali ako a sam si s tym neviem rady. Databazova tabulka moze mat akukolvek formu alebo obsah. Nie je to definovane striktne ze len takto. A vsetko sa to nakoniec nachadza ulozene na jednom mieste. Databaza je v hlavnom adresary a formulare sa ukladaju do podadra.
Odpověď
Ludo | 14.6.2016 17:56  
 
 
A ešte jedna otázka - neviem či to je možné, ale dali by sa vložiť tie číselné položky- cena, zľava a cena po zľave ako odkazy resp. dynamické. Myslím to tak, že keď zmením napr. cenu v už uloženom formulári, aby sa mi zmenila aj v databáze?
Odpověď
elninoslov | 14.6.2016 20:09  
 
 
Takmer z rovnakého dôvodu ako predošlá vec. Nie nepôjde to. Do databázy uložíme (záhadným spôsobom - viď vyššie) odkaz na súbor niekde na sieti, alebo ešte "lepšie" u niekoho v práci či doma. Tento súbor potom pošleme niekomu ďalšiemu mailom na úpravu. A budeme chcieť aby databáza, ktorá sa naštartuje len občas, o tom vedela. Takisto nereálne. Ak by boli súbory stále rovnako pomenované a na stále rovnakom umiestnení napr. v sieti, tak by odkazy na súbory fungovali. A Vy požadujete presný opak. Navyše takéto veci sprostredkováva klasická DB, nie Excel, ale aj to v inom garde. Do DB musí niečo (napr. makro) tie odkazy zapísať... Obe tieto veci považujem za nereálne. Možno niekto na niečo iné príde ...
Odpověď
Ludo | 14.6.2016 21:22  
 
 
Tu sme sa si nie celkom pochopili. Formular vytvorim ja a je stale rovnaky. Vyplni ho zakaznik na inom PC a niekedy aj na inom softe. Potom ho posle ku mne mailom a ja si ho ulozim do databazy. Je nedno ci v PC alebo externe ulozisko (ten co formular vyplnil uz nan nema dosah). Niekedy sa vsak stane ze sa cena zmeni. Ja tuto hodnotu upravim v uz ulozenom formulari a mala by sa preklopit aj do databazy. Teraz mi to fungovalo tak ze tam mam obycajny odkaz na prislusnu bunku v kazdom formulari. Ked zmenim hodnotu zmeni sa aj v databaze. Niekedy to vsak nefunguje spravne a musim zasa rucne upravit odkaz.
Odpověď
elninoslov | 15.6.2016 02:39  
 
 
Je už pokročilá hodina, tak snáď to teraz chápem. To je zásadná vec, že súbory budú na jednom mieste. Potom stačí urobiť makro v DB pri otváraní DB, ktoré prehľadá adresár s formulármi a vytvorí podľa nájdených názvov súborov patričné živé odkazy. A ak by toho bolo veľa a spomaľovalo by to prácu, tak by sa aktualizácia mohla robiť tlačítkom jednorázovo. Ak zajtra vyjde čas, spr s vym Vám nástrel.
Odpověď
elninoslov | 15.6.2016 17:01  
 
 
Stále tam vidím potenciálny problém. Ak nebude formulár existovať, dostanete chybu, alebo ak nebude existovať a vy aktualizujte, tak jeho dáta v DB nebudú. Teda ak chcete aby aj staré dáta ostávali v DB a zároveň v nich boli aj odkazy na existujúce formuláre, tak to bude podstatne zložitejšie. A do toho sa mi nechce.
Odpověď
Ludo | 16.6.2016 15:21  
 
 
Dakujem pekne. Je to tatko super. Musím to skúsiť previezť na moje formuláre a databázu. Určite odskúšam obe varianty a uvidím čo bude pre mňa praktickejšie. Ak by som zvolil tú prvú variantu logicky by to malo byť ako aj vypíšete vhodnejšie riešenie (odskúšam, či my nebude makro odstraňovať v iných programoch ako je Excel), bolo by to možné aby to makro vložilo do políčka Názov (v databáze) link, ktorý by mi po kliknutí otvoril konkrétny formulár? Teda makro by zobralo názov svojho súboru a vytvorilo by http odkaz v danom zázname. Postačovalo by aby ten odkaz bol na jednej položke. Dúfam, že som sa dobre vyjadril, lebo tieto požiadavky sa ťažko opisujú :)
Odpověď
elninoslov | 16.6.2016 17:06  
 
 
ale príliš som to netestoval...
Odpověď
Ľudo | 17.6.2016 11:11  
 
 
Dobrý deň, ešte jeden dotaz. Keď teraz do adresára ukladám nové formuláre a dám aktualizovať, tak mi stále poprehadzuje poradie. Zatriedi to podľa názvu formulára. Dá sa to obísť tak, že budem mať vo formulári aj poradové číslo a to budem prenášať ako hodnotu do databázy a nie ako vytváranie rady automaticky (teda to prve i nahradím odkazom na konkrétnu bunku s poradovým číslom), len je dáky príkaz, aby v databáze zoraďovalo stĺpec A od najväčšieho po najmenšie a rešpektovalo hlavičku? A druhý detail - ak ostane nevyplnené pole vo formulári tak vráti do databázy hodnotu 0. Teoreticky sa toho viem zbaviť cez podmienené formátovanie, ale myslím si, že na to je aj elegantnejšie riešenie aby ak je pole nevyplnené vrátilo "".
Odpověď
elninoslov | 18.6.2016 12:26  
 
 
V H1 je číslo formulára. Číslo formulára môže byť zakomponované aj v názve súboru, napr. "001 názov_zákazky.xlsx". PowerQuery ma tiež napadlo. Mrknite aj na riešenie MePExG.
Odpověď
Ľudo | 20.6.2016 16:58  
 
 
Teraz to je super. Veľmi pekne ďakujem za váš čas a ochotu pomôcť. Toto by som určite sám nedal.. :) a to som sa považoval za celkom zdatného v excely. Pozriem aj PQ a porovnám si to, čo je pre mňa praktickejšie.
Odpověď
Dezider | 11.1.2021 09:58  
 
 
Našiel som na tomto fóre súbor "Zápis do DB.zip" a chcel by som ho využiť. Toto riešenie ale aktualizuje databázu vždy od druhého riadku. Ja mám na prvých štrnástich riadkoch údaje o databáze (Záhlavie v aktuálnej databáze je v pätnástom riadku). Dá sa to upraviť tak, aby sa údaje aktualizovali od riadku 16, Ďakujem
Odpověď
Ján | 14.7.2020 14:35  
 
 
Zdravím, prosím o pomoc. Potrebujem aby mi excel z viacerých súborov v jednom adresári zkopíroval riadky, kde v stlpci B je hodnota a v stĺpci H nie je, alebo rozsah riadku napr. B5:H5 (kde je splnená predošlá podmienka) a zapísal do cieľového súboru na riadok 4. Potom sa vátil takto do zdrojového súboru na ten istý list a pokračoval v prehľadávaní. Pri ďalšom splnení podmienky zase skopíroval a zapísal do cieľového súboru na riadok 5 a tak ďalej až v stĺpci B príde ku hodnote "koniec". Potom rovnako prehľadal a pri splnení podmienky zkopíroval aj ďalšie listy súboru a zapisoval vždy do ďalšieho riadku cieľového súboru a takto prešiel všetky súbory *.xlsx v adresári. Niečo mámm vytvorené a keď klikám krokovo a mám otvorený zdrojový súbor, tak mi to vypíše ako má. Ale keď spustím makro, tak mi vypíše iba jednu hodnotu z 3. súboru a hneď 3x pod sebou. Ďakujem za každú radu.
Odpověď
MePExG | 17.6.2016 20:39  
 
 
Dobrý deň. Ak môžem chcem sa pokúsiť ponúknuť Vám riešenie cez PowerQuery (PQ). Ďalší popis v prílohe. V prípade záujmu mu môžete kontaktovať na uvdený mail.
Odpověď
MePExG | 18.6.2016 06:01  
 
 
Prikladám riešenie pomocou PQ aj s postupom inštalácie PQ pre Excel 2010, alebo 2013. Pre verziu 2016 nie je potrebné PQ inštalovať.
Odpověď
MePExG | 18.6.2016 06:03  
 
 
Nepodarila sa príloha. Tak teda znova to riešenie.
Odpověď
Ludo | 20.6.2016 17:04  
 
 
Ďakuje za vašu ochotu a čas. O takejto funkcii v Excely som ani len netušil :) Musím si to pozrieť a porovnať aj s tým prvým riešením. Zatiaľ som to pozrel len zbežne, tak neviem či tam nebudú pre mňa dáke obmedzenia, ale vyzerá to tak, že by to malo fungovať spoľahlivo. Trocha možno bude problém to radenie formulárov podľa času uloženia - ak ho zaktualizujem o novú skutočnosť, tak asi zoberie za dátum pre zoradenie ten aktualizovaný a je možné, že všetky nasledujúce formuláre prečísluje, čo by nebolo žiadúce. Ale musím si to pozrieť poriadne a odskúšať. PQ vyzerá zaujímavo.
Odpověď
MePExG | 21.6.2016 13:33  
 
 
Dobrý deň. Zoraďovanie sa dá urobiť aj podľa názvov súborov, alebo podľa ľubovoľnej dostupnej hodnoty. Ešte som zabudol povedať, že do spracovania zahrnie všetky listy súboru (ak rozpozná štruktúru formulára). Ak by to bolo prekážkou, dá sa spracovávať iba prvý list. V prípade potreby, rád pomôžem s úpravami.
Odpověď