Poradna - Uložení souboru makrem
Vložení příspěvkuhlavní 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. 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ěď 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ěď 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ěď 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ěď 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ěď 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ěď 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ěď 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ěď Zdravím, jistě že to jde. Jak minule, přidat do "ThisWorkbook".
Odpověď 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ěď 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ěď 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ěď 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ěď |