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











Vytvoř si párové triko

Poradna - Uložení souboru makrem

hlavní kategorie | zpět | + odpovědět na toto téma
Uložení souboru makrem - diskuze na toto téma
Ahoj, mám problém a sám to nezvládám. V místní síti není dovoleno sdílení souborů a složek mezi jednotlivými PC. Soubory lze sdílet jen prostřednictvím firemního serveru. A teď k věci. Do sešitu (tabulky) v Excelu píšeme udělanou práci. Do jiného souboru mám udělané propojení, které z prvního souboru "vyfiltruje" některé údaje pro sousední kanceláře. První soubor je v našem PC a druhý, sdílený je na na firemním serveru. Problém je v tom, že když otevřu sdílený soubor z cizího PC, tak se hodnoty v něm nezaktualizují. Abych tomuto předešel, musím po každém zápisu do prvního (zdrojového) souboru v našem PC otevřít sdílený soubor a uložit ho. A nešlo by udělat nějaké Makro, které by samo např. při při uložení zdrojového souboru otevřelo a uložilo i soubor sdílený?? Nebo nějaký jiný nápad? Dík.

Maximus | 4.3.2016 18:44  
 
 
Ahoj, koukni tady: office.lasakovi.com/excel/vba-soubory/otevrit-soubor-s-heslem-excel-vba/ office.lasakovi.com/excel/vba-soubory/SaveAs-metoda-ulozit-jako/
Odpověď
Luboš | 4.3.2016 20:42  
 
 
Dík, přeběhl jsem to jen tak narychlo a asi to můj problém nevyřeší. Dnes jsem si s tím chvilku hrál. Nahrát makro, které otevře, uloží a zavře sdílený soubor není problém. Problém je, že se toto makro musí někdo nějak spustit. Já bych chtěl, aby se makro spustilo samo, automaticky při ukládání zdrojového souboru. Do zdrojového souboru zapisuje kde kdo a někomu je obtížné vysvětlit, že musí udělat i něco jiného (spustit makro) než jen uložit změny v souboru jak je zvyklý. Nevěřím tomu že to nejde, 70 let po válce ..... :-)
Odpověď
a.mlady | 5.3.2016 08:41  
 
 
Zdravím, neměl by to být problém. Do "ThisWorkbook" vložit tento kod. Při otevření tohoto souboru proběhne toto makro. Private Sub Workbook_Open() Application.ScreenUpdating = False 'Blok překlikavání obrazovky Workbooks.Open C:\dokument.xlsm 'cesta a název souboru, který má být otevřen nebo Workbooks.Open filename:= "Cesta a název souboru" Workbooks("Název souboru").Close 'zavření souboru nebo Workbooks("Název souboru").Close savechanges:=False Application.ScreenUpdating = True End Sub Název souboru a cesta dle výběru.
Odpověď
a.mlady | 5.3.2016 08:49  
 
 
Přiložení ukázky kodu.
Odpověď
Luboš | 5.3.2016 10:03  
 
 
Dík moc, zkusím to, ale bojím se že problém teď bude mezi židlí a klávesnicí. Např. formulace "Do "ThisWorkbook" vložit tento kod" a celý visual basic mně nic neříká. Budu to zkoušet metodou pokusů a omylů. ;-) Uvidíme, ale bojím se, že ještě napíšu. Znáš to, někomu něco vysvětlíš a ukážeš, že to musí pochopit snad každý a ono mu to stejně nejde. Oni ty blbci jsou totiž hrozně vynalézavý. :-)
Odpověď
a.mlady | 5.3.2016 10:45  
 
 
ThisWorkbook = otevřít excel a pak Alt+F11 a v pravo ve sloupečku jsou názvy listů a ThisWorkbook nebo TentoSešit apod. podle lokalizace.
Odpověď
Luboš | 5.3.2016 11:09  
 
 
ThisWorkbook jsem našel, kód jsem tam vložil. Upravil cestu k souboru, který chci otevřít. Workbooks("Název souboru").Close jsem napsal jen název souboru. Asi dvakrát mně to vyfuckovalo, něco bylo špatně. Z kódu jsem odstarnil část za "nebo" (to bylo asi na výběr, že?) Teď to vypadá, že něco proběhne, ale u odkazovaného souboru je starý čas uložení, tak to asi nefunguje. Já si s tím ještě pohraju. Zatím dík.
Odpověď
a.mlady | 5.3.2016 11:30  
 
 
Jestli má být otevíraný soubor přes makro při zavíraní uložen, je třeba změnit Workbooks("Název souboru").Close savechanges:=False na "TRUE"
Odpověď
Luboš | 5.3.2016 14:16  
 
 
Už to zafungovalo. Dobrá práce. Jsi dobrej, dík. Ještě to obtěžuje s povolením makra, ale to snad nějak zvládnu. Ještě takový detail, krůček k dokonalosti, kód se spouští při otevření sešitu, takže úpravy, které v něm udělám, se ve sdíleném souboru objeví až po dalším otevření. Nešlo by aby se kód spustil při ukládání nebo zavírání zdrojového souboru?? Ale nejde o život, už takhle je to pro nás veliký krok kupředu.
Odpověď
a.mlady | 6.3.2016 11:29  
 
 
Zdravím, jistě že to jde. Jak minule, přidat do "ThisWorkbook".
Odpověď
Luboš | 6.3.2016 16:17  
 
 
Děkuji, teď je to dokonalé. Děkuji, děkuji, děkuji, děkuji, děkuji, děkuji. Budu tě všude chválit. Zkoušel jsem to jen doma na "cvičných" souborech, snad to bude fungovat i v práci na síti. Ale myslím, že by mohlo. Ještě dotaz k posednímu kódu. Do "ThisWorkbook" vložit obě části kódu? To nefungovalo, funguje to jen s první částí (BeforoClose). A "Workbooks.Open" a "Workbooks.Open filename" musí být vyplněná cesta u obou? Mně to psalo, že soubor je již otevřen, tak používám jen "Workbooks.Open Filename".
Odpověď
a.mlady | 6.3.2016 16:59  
 
 
Zdravím, jsem rád, že mohl trochu pomoct. S tím "Workbooks.Open" a "Workbooks.Open filename" se to má tak, že si můžeš vybrat, co bude pro tebe jednodušší. Existuje většinou více možností jak to napsat.
Odpověď
Luboš | 7.3.2016 16:25  
 
 
Ahoj, tak už jen pro pořádek, v práci to zafungovalo na první dobrou. :-) Ušetřil si nám tím hodně běhání (po schodech). ;-) A poslední dotaz, kde by se to dalo naučit, alespoň základy, na netu jsem nic stravitelného nenašel. Dík.
Odpověď
a.mlady | 7.3.2016 16:51  
 
 
Ahoj,hned v první odpovědi od Maximuse najdeš odkaz na office.lasakovi.com/excel/ - tam toho je hafo, jen je třeba to důkladně projít. excelplus.net/karty-prvni-pomoci/funkce-ve-vzorcich-na-listu/ Přeji hodně úspěchů v učení.
Odpověď