Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno MS Excel - načítání dat z jiných listů

Programování mi moc nejde, ale docela to dokáže usnadnit práci.
Potřeboval bych prosím trošičku pomoct :))
Na jednom listu bych měl 4 tabulky pro tisk
Na dalších listech vytvářené databáze, jde jen o to, že by si člověk v některé z databází vybral řádek, klikl by na tlačítko v listu a některé hodnoty z řádku by se přesunuli do některé z tabulek na listu 1, nevim jestli jedno tlačítko které se bude ptát do které z tabulek, nebo 4 tlačítka? Vůbec nevim jak na to :((

Díky za jakoukoliv snahu mi pomoct...

[mod]Doplněn předmět a změna kategorie (LaKr)[/mod]

Předmět Autor Datum
Možná by bylo lepší napsat, čeho konkrétně chceš docílit.
Kráťa 11.10.2006 08:58
Kráťa
mám databázi, každý řádek má několik různých údajů. chtěl bych si prostě vybrat řádek, kliknout na t…
noody 11.10.2006 09:17
noody
v databázi bude asi 30 listů, list může mít třeba 150 řádků, list tisku, budou tam 4 tabulky, protož…
noody 11.10.2006 09:47
noody
hehe.. nedelame ciste nahodou ten samej excel? teda ja uz ho mam hotovej .. moc mi pomohl LOS z teto…
MKc 11.10.2006 10:10
MKc
ozvat se nemůžu :( Společnost pro kterou pracuji, mi nedovoluje používat icq :(( takže nějak jinak..…
noody 11.10.2006 10:25
noody
A dovoluje ti společnost, pro kterou pracuješ, používat internet? Pak totiž můžeš použít ICQ2Go.
host 11.10.2006 11:19
host
Jako pres maila fakt resit nic nebudu.. to se ani neda
MKc 11.10.2006 13:02
MKc
Nemůžu použít nic co obsahuje icq, stránky s tímhle v názvu mám blokované, tak jedině nějakej chat?
noody 11.10.2006 13:10
noody
a říká ti něco MS Access? :-D
touchwood 12.10.2006 08:24
touchwood
Pročpak? Pode to tam líp???
noody 12.10.2006 08:27
noody
no jasně.
touchwood 12.10.2006 08:49
touchwood
Akorát že ases nikdo neovládá, kdybych přišel jak to v tom udělat? tak snad, ale ostatní by s tím ne…
noody 12.10.2006 11:20
noody
já ho třeba ovládám :-) poslední
touchwood 12.10.2006 14:30
touchwood
Ty máš v Excelu databáze? Fíííha....
host 11.10.2006 10:01
host
Najprv si rozmysli, ako chceš pridávať tie riadky do listu "tisklist". Možno Ti stačí napísať do ti…
los 11.10.2006 11:33
los
V tisklistu nebudou žádné řádky ani sloupce, hodnoty se budou doplňovat do předem definovaných buněk…
noody 11.10.2006 12:39
noody
V makre priradíš hodnotu bunke A1 na prvom liste takto: Sheets(1).Cells(1, 1) = "blablabla" Tlačid…
los 11.10.2006 13:10
los
No, tak docela návod by tady byl, ale jak to udělat? Já o VB nic nevim, a v tom kódu se strácim...Ta…
noody 11.10.2006 13:19
noody
Dá sa to robiť úplne jednoducho. Ja som podobný spôsob používal už viackrát a to takto: Vo formulári…
senior 11.10.2006 13:27
senior
Ak máš v databáze nejaký identifikátor, tak by som použil taký prístup, ako píše senior. Ak si myslí…
los 11.10.2006 13:52
los
struktura údajů a jak by to mělo vypadat jsem umístil na tisklist.JPG Myslím že teprv teď se bude d…
noody 12.10.2006 07:41
noody
Aha, takže keď stlačí dvakrát jedno tlačidlo, tak hodnoty v určitých bunkách na tisk liste sa majú p…
los 12.10.2006 13:28
los

mám databázi, každý řádek má několik různých údajů.
chtěl bych si prostě vybrat řádek, kliknout na tlačítko, a několik údajů z vybraného řádku se překopíruje na jiný list, Na tom jiném listu budou 4 tabulky, Je potřeba je všechny naplnit hodnotama z databáze a vytisknout

v databázi bude asi 30 listů, list může mít třeba 150 řádků,
list tisku, budou tam 4 tabulky, protože to budu tisknout na A4, komplikace jsou v tom, že z řádku databáze budu brát 5 údajů z 10, a těch 5 údajů je potřeba poskládat do některé z tabulek na tisklistu, To není tak těžký jak se zdá,
jde jen o to aby tlačítko pochopilo z kterého řádku brát hodnoty, výběr se potom zúží nejspíš sloupci, a potom musí být přesně definované buňky na listu tisku, protože si je nemůže kopírovat kamkoliv,
To přenesení hodnot do jiného listu jde naprogramovat přes makra, docela pohodlně, ale tam je právě chyba, že se zapíše která buňka se má kam skopírovat, ale mě bohatě stačí do toho makra nějak vložit to, aby bral poze hodnoty z ActiveCell a např buňku v sloupci A vybraného řádku přenesl na tisklist do A2, a pokračoval hodnotu z B sloupce přenesl na tisklist do A3, např...
A ten výběr mezi čtyřma možnostma na tisklistu, buť 4 tlačítka, nebo by se to tlačítko muselo nějak ptát...

hehe.. nedelame ciste nahodou ten samej excel? teda ja uz ho mam hotovej .. moc mi pomohl LOS z teto poradny (kdyz tak nad tim premyslim, vymyslel snad vsechny vzorce.. ja to jen daval dohromady) .. taky mam cca 30 listu a excel ma uz 10MB :o) kdyztak se ozvi na 108065574 a zkus mi popsat presne to co potrebujes tady to mas napsane trosku chaoticky ..

Najprv si rozmysli, ako chceš pridávať tie riadky do listu "tisklist".

Možno Ti stačí napísať do tisklistu len nejaký identifikátor, na základe ktorého sa vyplnia zvyšné stĺpce. Takýto prístup by v podstate nevyžadoval ani použitie makra (stačili by vzorce), otázkou však je, či majú riadky v "databáze" nejaký identifikátor a či by to tak bolo vhodné pre toho, kto bude ten tisklist vypĺňať.

Ak to chceš tak, že v každej databázovej tabuľke bude nejaké tlačidlo pre pridanie záznamu do tisklistu, tak to sa dá napísať ako makro vo VBA. Nechápem presne v čom tu máš problém, pretože princíp fungovania toho makra si napísal...

list tisku, budou tam 4 tabulky, protože to budu tisknout na A4

Ako to spolu súvisí? Jedna tabuľka sa dá vytlačiť aj na viacero strán tak, že hlavička tabuľky bude na každej strane. Alebo máš nejaký iný dôvod, prečo máš štyri tabuľky?

V tisklistu nebudou žádné řádky ani sloupce, hodnoty se budou doplňovat do předem definovaných buněk, tam je potřeba rozhodnout ze 4 možností, To by asi vyřešily 4 tlačítka v liště, to by taky asi šlo udělat, výběr v databázi bude formou activecell.offset(0,sloupec).value/ tohle by mělo vzít hodnotu zadaného sloupce řádku na kterým budu stát/asi...
akorát nevim jak k tomu přidat to kam se to má přenést a jak bych udělal ty 4 tlačítka v liště?

No, tak docela návod by tady byl, ale jak to udělat?
Já o VB nic nevim, a v tom kódu se strácim...Tak jak todle dát do kupy? by mi asi někdo musel vysvětlit každej řádek kódu, mrknu na net a podívám se na nějaký návody, takhle to do kupy nedám, už mi nefunguje ani to co předtím jelo..

Dá sa to robiť úplne jednoducho. Ja som podobný spôsob používal už viackrát a to takto:
Vo formulári pre tlač si určím bunku, v ktrej budem definovať údaje k načítaniu. môže to byť napr. "A1" kde napíšem číslo záznamu v databaze.
Príklad: Názov hárkov v zošite, "Tlač", "db1", "db2" atd... V listoch "db1" aj ďalších databazach si v prvom stlpci očislujem záznamy (1,2,3... ). Na liste "Tlač" potrebujem do buňky "C5"načítať údaje napr. z "db1" a z riadku "58" a zo stlpca "F". Vzorec v buňke "C5" bude vyzerať takto:
=VLOOKUP(Tlač!$A$1;db1!$A$2:$T$200;6)
Ak si do "A1" v liste tlač zapísal číslo 58, tak sa ti podľl uvedeného vzorca do bunky C5 načíta údaj z listu "db1" z riadku označenom číslom položky 58 a zo stlpca č.6, tj. "F"
Obdobne si nadefinuješ vzorce do ostatných buniek. Aby sa ti číslo ktoré zapíšeš do "A1" netlačilo v dokumente, tak si zmeň format písma na bielu farbu, alebo nadefinuj format bunky ;;;.

Ak máš v databáze nejaký identifikátor, tak by som použil taký prístup, ako píše senior. Ak si myslíš, že vhodnejšie je tlačidlo s makrom, tak to spravíš nejako takto:

1. Vytvoríš si tlačidlo:
Cez menu View / Toolbars / Control Toolbox si zobrazíš lištu s prvkami, ktoré sa dajú pridávať. Vyberieš tlačidlo a umiestniš ho do stránky. "Ikona s pravítkom" je teraz stlačená, čo znamená, že si v Design móde.
Ak chceš, môžeš si to tlačidlo nejako inteligentne nazvať (inak to bude CommandButton1) cez pravé tlačidlo myši a Properties.

2. V Design mode dvakrát klikneš na tlačidlo, čím sa otvorí Visual Basic Editor a vytvorí obslužne makro pre udalosť stlačeni tlačidla, do ktorého stačí už len napísať, čo chceš.

3. No a teraz by som Ti napísal, čo potrebuješ, ale keďže neviem nič o štruktúre údajov v zošite, tak len všeobecne:
Najprv si vytvorím pomocné premenné pre niektoré oblasti:
- myTable bude tabuľka databázy, povedzme že je na druhom liste a jej ľavý horný roh je v bunke A3,
- myRegion bude oblasť na prvom liste (tisklist), kde sa budú nachádzať vybrané riadky z databázy,
- myCell si nastavím tak, aby to bol nový riadok na tiskliste, čiže riadok hneď pod myRegion.
Ďalej pokračujem len vtedy, ak používateľ označil (RangeSelection) niečo na liste s databázovou tabuľkou, takže porovnám index worksheetov.
Potom si zistím, čo používateľ na liste s databázovou tabuľkou označil, t.j. prienik mojej tabuľky (myTable) s vybranou oblasťou (RangeSelection).
No a ak niečo vybral, tak prejdem všetky riadky, ktoré sú vo vybranej oblasti a prekopírujem napríklad prvé tri stĺpce na prvý list (tisklist).

Takže to makro by vyzeralo nejako takto:

Set myTable = Sheets(2).Cells(3, 1).CurrentRegion
Set myRegion = Sheets(1).Cells(1, 1).CurrentRegion
Set myCell = myRegion.Offset(myRegion.Rows.Count).Resize(1, 4)

If myTable.Worksheet.Index = ActiveWindow.RangeSelection.Worksheet.Index Then
    Set mySelection = Intersect(myTable, ActiveWindow.RangeSelection)

    If Not mySelection Is Nothing Then
        For Each myRow In mySelection.Rows
            myCell.Cells(1, 1) = Sheets(2).Cells(myRow.Row, 1)
            myCell.Cells(1, 2) = Sheets(2).Cells(myRow.Row, 2)
            myCell.Cells(1, 3) = Sheets(2).Cells(myRow.Row, 3)
            Set myCell = myCell.Offset(1, 0)
        Next myRow
    End If
End If

struktura údajů a jak by to mělo vypadat jsem umístil na tisklist.JPG

Myslím že teprv teď se bude dat napsat kód, kterej pochopím

Jak to bude fungovat je asi jasný, vybrat řádek, kliknout na tlačítko1 a hodnoty z definovaných sloupců se přenesou na tisk list a poskládaj se tam podle dané definice,
pak bych vybral jinej řádek a tlačítko2 a provedlo by se to podobně,
naprosto mi bude stačit makro jediného tlačítka, u dalších se budou měnit pouze buňky tisklistu

Nejsu si jistej, ale to tlačítko by mělo fungovat způsobem:
vzít aktivní řádek, hodnotu ze sloupce A kopírovat na tisklist do A4,
dál ze sloupce B kopírovat na tisklist do C2 atd atd...

Mě se to zdá docela jednoduchý až na to že nevim jak na ten kód
Díky za pomoc :))

Aha, takže keď stlačí dvakrát jedno tlačidlo, tak hodnoty v určitých bunkách na tisk liste sa majú prepísať hodnotami z vybraného riadka v databáze. V tom prípade je makro úplne jednoduché - bude pozostávať z pár riadkov, ktoré môžu vyzerať nejako takto:

Sheets("tisklist").Range("A4") = Sheets("databaze").Cells(ActiveWindow.RangeSelection.Row, 1)
Sheets("tisklist").Range("C2") = Sheets("databaze").Cells(ActiveWindow.RangeSelection.Row, 2)

Zpět do poradny Odpovědět na původní otázku Nahoru