< návrat zpět

MS Excel


Téma: Aktualizace dat bez otevření sešitu rss

Zaslal/a 5.2.2019 14:21

Dobrý den,
mohl by mi někdo poradit jak bych mohl aktualizovat data v několika cílových sešitech po jejich změně v jediném zdrojovém sešitě, tak abych nemusel každý zvlášť otvírat?
Předem děkuji za rady.

Zaslat odpověď >

#042669
elninoslov
A ako berie tých niekoľko cieľových zošitov hodnoty zo zdrojového zošitu ? Vzorec ? Aktualizuje sa sám. Dotaz ? Stačí dať Údaje - Obnoviť všetko. Hodnoty sú natvrdo skopírované ? Jedine makrom, a to bude každý súbor na pozadí otvárať a znovu natvrdo vkladať dáta (podľa nejakých Vami nešpecifikovaných podmienok) a súbory ukladať.

Priložte prílohu s príkladom zdrojového, cieľového súboru, a prípadných podmienok manuálnej aktualizácie.citovat
#042672
avatar
Neumím Vám to asi popsat. V příloze posílám sešit "zdroj". V něm jsou v buňkách A2, A3 a A4 nějaká data. Data se mi přepisují do sešitů a to: buňka A2 do sešitu A, buňka A3 do sešitu B atd. Když změním data ve zdroji, musím potom otevřít cílový soubor, aby se mi tam data přepsala. Nejdou data v cílových sešitek aktualizovat bez jejich otevření?
Příloha: zip42672_excel.zip (43kB, staženo 7x)
citovat
#042675
elninoslov
Aha, tak Vy potrebujete napr. preniesť súbory inam, ale aby mali aktualizované dáta zo zdroja? Lebo inak budú mať pôvodné hodnoty. No tak to asi jedine makro. Vyskúšajte niečo takéto.
Vytvorí novú inštanciu Excelu na pozadí, v nej postupne otvorí všetky súbory xls, xlsx, xlsm v adresári s týmto súborom, uloží ich, a zavrie. Teda budú mať aktualizované hodnoty.

Skúšajte to VÝHRADNE na kópii súborov v nejakom skúšobnom adresári ! Až kým nebude isté, že je to to, čo potrebujete.
Příloha: zip42675_aktualizace-souboru.zip (40kB, staženo 11x)
citovat
#042701
avatar
Děkuji moc za snahu o pomoc, ale nějak mi to nefunguje. Když změním data ve zdroji, tak se mi nezmění v cílových sešitech :(citovat
#042702
avatar
Nechcem byť rýpaví, ale nechápem potrebu z jedného zošita prenášať hodnoty po jednej z riadku do x nových zošitov... a keď už by som to aj pripustil, už vôbec mi nejde do hlavy, prečo sa musia zošity otvárať a aktualizovať? Jednoduchšie by bolo všetky zmazať, a/alebo generovať znovu a prepisovať ich. Tiež neviem kam majú postupovať názvy výsledných zošitov, ak je viac riadkov ako písmen v abecede (tuším 26)? Pri 1M riadkoch chcete mať 1M súborov? Samé otázky a odpovede si máme vycucať...citovat
#042712
elninoslov
Funguje to. ALE ! V tých zošitoch sú linky na zdrojový zošit. Teda aj s cestou. Vy keď si urobíte kópiu toho celého adresára so zdrojom, aj so súbormi, tak to fungovať nebude, lebo tie súbory stále obsahujú cestu k pôvodnému umiestneniu. Tiež som si to neuvedomil, že tie Vaše súbory z prílohy tiež obsahujú Vašu pôvodnú cestu. Riešením na vyskúšanie, bez rizika poškodenia origo súborov je, že si urobíte zálohu celého origo adresára, z ktorej nebudete nič otvárať ani meniť. Makro vložíte do pôvodného origo adresára, kde sú aj správne cesty k linkom a spustíte. Pôvodnú origo verziu všetkých súborov dostanete, ak tú zálohu nakopčíte na pôvodné miesto. Bez rizika.
Vyskúšajte toto, rozbalte to priamo do C:\ nech sa nám zhodujú foldre. Zmente hodnoty v hlavnom, použite makro. Zatvorte hlavný a zmente mu názov napr. na "zdroj2.xlsm". Premiestnite ABC niekde inde napr. na kľúč, a otvorte. Hodnota bude zmenená. Ale link bude na pôvodný súbor v C:\, len ho nenájde a nechá poslednú známu hodnotu (ak nieje nastavený Excel inak).
Příloha: zip42712_aktualizace-souboru.zip (39kB, staženo 5x)
citovat
#042725
avatar
Lze na to jít opačně, aby se sešity po otevření aktualizovaly ze zdrojového sešitu?

Bylo by možné bez propojení ze zavřeného zdrojového sešitu pomocí makra po otevření cílových sešitů, nedávno zde bylo čtení pomocí funkce GetValue, která vrátí hodnotu vzorcem spuštěným pomocí ExecuteExcel4Macro.

Modul v cílových sešitech:
Option Explicit

Function GetValue(fPath As String, fFile As String, fWsh As String, fRw As Long, fClmn As Integer) As Variant
Dim xlApp As New Excel.Application, fString As String
fString = "'" & fPath & "\[" & fFile & "]" & fWsh & "'!R" & fRw & "C" & fClmn
GetValue = xlApp.ExecuteExcel4Macro(fString)
End Function


Událost po otevření v cílových sešitech:
Private Sub Workbook_Open()
Dim val
val = GetValue(ThisWorkbook.Path, "Zdroj.xlsx", "List1", 2, 1)
Worksheets("List1").Cells(2, 1) = val
End Sub


Bude-li povoleno spuštění maker v cílových sešitech, pak se buňka B2(R2C1) aktualizuje hodnotou ze zdrojového sešitu.
Pro pár buněk navíc by mohla funkce po úpravě vrátit pole potřebných hodnot.citovat
#042727
elninoslov
No to bude záležať na tom, čo sa má s ktorými súbormi robiť. Nieje vôbec jasné požitie. Či sa distribuuje aj zdroj aj súbory súčasne a spolu, či sa mení cesta k zdroju či cesta k súborom, či môžu obsahovať makro aj samotné súbory, ... nič, žiadne upresnenie... .citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura III

Oblíbený formulář Faktura byl vylepšen a rozšířen. Formulář faktura III
Více se dočtete zde.

Aktivní diskuse

Ohromný nárust va velikosti souboru

zabudnuteheslo • 22.8. 6:52

Ohromný nárust va velikosti souboru

nosekpav • 21.8. 10:38

VBA macro kopírovanie oblasti

elninoslov • 21.8. 0:23

VBA macro kopírovanie oblasti

marjankaj • 20.8. 22:23

VBA macro kopírovanie oblasti

Anonym • 20.8. 18:45

Denní plán směn - poslední úpravy

pk-wall • 20.8. 9:35

Denní plán směn - poslední úpravy

elninoslov • 20.8. 9:30