Přeskočit navigaci | Přeskočit na novinky

Nový videokurz na Seduo: Excel pro začátečníky

     

Jste zde: Úvodní stránka » excel » vba-triky » vba-excel-ukonceni-makrem

Ukončení aplikace (uzavření sešitu) - Excel VBA


Jak ukončit práci Excelu, případně sešitu. Excel se sám ukončí ... aneb jak někoho zmást :)

Doplněno 10.4.2013

Microsoft Excel VBA logo

Úvodem

V článku se dozvíte jak lze pomocí VBA ukončovat otevřené sešity, nebo uzavřít přímo aplikaci Microsoft Excel. Článek je rozdělen na tyto kapitoly:


Zavření aktuálního sešitu

Zavře aktivní sešit a umožňí uživateli rozhodnout, zda případné změny, mají být uloženy.

ActiveWorkbook.Close

Zavřít sešit bez uložení změn.

ActiveWorkbook.Close False ' Zavře aktivní sešit bez uložení změn ' možno zapsat i takto ' ActiveWorkbook.Close SaveChanges:=False

Zavřít sešit a uložit změny.

ActiveWorkbook.Close True ' Zavře aktivní sešit a uloží všechny změny ' další možnost uložení ' ActiveWorkbook.Close SaveChanges:=True

Další možná doplnění

' Zabranění zobrazení systemových hlášek Application.DisplayAlerts = False

Zavření zvoleného sešitu

Chceteli zavřít určitý sešit (neaktivní)

Workbooks("sesit.xls").close False ' Workbooks("sesit.xls").Close SaveChanges:=False

Ukončení aplikace Excel

Ukončení aplikace Excel se provede příkaze Application.Quit

Application.Quit

Automatické ukončení aplikace Excel

Potřebujeme za 30 vteřin po spuštění makra ukončit Excel. Řešení je jednoduché. Použijeme v prvním makru funkci OnTime, která po 30 vteřinách spustí druhé makro s funkcí pro vypnutí (a zamezení chybových hlášek).

Kód se skládá ze dvou části:

Část 1

Sub Ukonci30sec() Application.OnTime Now + TimeValue("00:00:30"), "MujKonec" End Sub

Část 2

Sub MujKonec() Application.DisplayAlerts = False Application.Quit End Sub

Závěrem

Využíváte automatické ukončování vašich sešitů?

Článek byl aktualizován: 01.11.2014 14:42

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák

Pavel Lasák - autor webu

Microsoft Office (Word, Excel, PowerPoint) se věnuji od roku 2006. Své vědomosti a zkušenosti dávám k dispozici na různých školeních a konzultacích, ale také na tomto webu. K dispozici na tomto webu je mnoho návodu, tipů a triků včetně desítek různých šablon.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil

Doporučte tento článek přátelům

Pokud vám článek pomohl, případně si myslíte, že může pomoci i někomu dalšímu, budu rád když jej sdílením doporučíte přátelům - děkuji:



Komentáře


Jindra Střelec

Přidáno: 10.04.13 11:33

Dobrý den, existuje makro, aby se uzavřel jen jeden z otevřených sešitů? jindra.strelec(at)tiscali.cz

Pavel Lasák

Přidáno: 10.04.13 16:11

To Jindra Střelec: Jasně ActiveWorkbook.Close bez dotazu na uložení ActiveWorkbook.Close False

Petr Pecháček

Přidáno: 10.04.13 19:04

Pro uchlácholení Excelu, že má vše uloženo, se dá také použít ActiveWorkbook.Saved = True. Automatické ukončení sešitu nepoužívám. Zpravidla je totiž potřeba automaticky sešit 1. otevírat, 2. nechat proběhnout makro a za 3. sešit uzavřít. Tj. automatizaci úlohy musí zajistit externí skript (naplánovaná úloha ve Windows, VBScript, dnes možná i PowerShell). Stávalo se, že Excel zůstával pro rozběhnutí skriptu "viset" a jedině v takovém případě bych viděl smysl ukončení Excelu po časové prodlevě. Jinak je to docela riziková věc a jsem pro korektní uzavírání sešitu na konci práce (tj. bez OnTime). OnTime ani nemusí v případě zaneprázdnění Excelu proběhnout. Přes API se nechá zajistit i pozdržení kódu VBA, dokud neproběhne jiný proces. V průběhu dlouhého procesu je rovněž dobré dát systému šanci provést si jeho úlohy (Do Events uvnitř cyklu). Jinak je možné naprogramovat i sebedestrukční makro v sešitu ve stylu Mission Impossible.

Jindra Střelec

Přidáno: 11.04.13 12:42

Děkuji za bleskovou reakci ;-) Pro mojí potřebu bohatě postačuje: "Zavřít sešit bez uložení změn."

Pavel Lasák

Přidáno: 11.04.13 16:02

To Jindra Střelec: Nemožné hned, zázraky na počkání ;)

Pavel Lasák

Přidáno: 13.04.13 08:19

To Petr Pecháček: Děkuji za doplnění.

miriam

Přidáno: 21.08.13 11:40

Dobrý deň mam naprogramované makro na overenie hesla cez internetový portál ale neviem ako zabezpečiť aby sa excelový zošit uzavrel ak sa daná hláška len zlodí bez vyplnenia a potvrdenia odoslania na overenie.

Vladimír

Přidáno: 04.10.13 06:22

Ahoj, poraďte prosím: jak dosáhnu, aby ve furmulářovém oknu byl zobrazen údaj z buňky a nedal se přepsat. Jak zapsat do formulářového okna funkci (opět nepřepsatelnou) např. DNES. Jak zajistit, aby form. okno vyplnilo celou obrazovku na jakémkoliv monitoru? děkuji kemars@volny.cz

PAVEL

Přidáno: 31.01.14 09:19

Dobrý den. Prosím o radu ohledně provedení aktualizace dat v zavřeném souboru. Jedná se o to, že mám sešit 1, který čerpá data ze sešitu 2 a ten další data ze sešitu 3. Pokud se mi změní data v sešitu 3 a sešit 2 neotevřu a nezaktualizuji data, tak se mi v sešitu 1 data neobjeví. Děkuji za radu.

Zdeněk

Přidáno: 22.04.14 10:14

Dobrý den, vytvořil jsem si makro kdy čerpám informace z jiného sešitu ten si otevřu v rámci makra, provedou se všechny procedury a na konci mi excel zamrzne na příkazu, kerý uzavírá sešit, z kterého jsem čerpal data. To se děje, když makro spustím F5, když jsem hledal chybu po jednotlivích částech, pomocí F8, tak vše proběhne jak chci a chyba se neprojeví. Zkoušeno v Office 2013, zkoušel jsem i příkaz(na zavření sešitu), který se mi uložil při nahrávání makra a byl formulovaný jinak. Setkal jste se s tím někdy někdo? Moje domněnka je, že má proběhnout něco v rámci excelu, ale jelikož je to tak rychlí tak se to kousne. Jinak ještě doplním, že sešit z daty, z kterého čerpám, se otvírá pouze pro čtení.

Zdeněk

Přidáno: 26.05.14 08:17

Tak problém vyřešen tím že před příkaz zavření sešitu vložen s příkazem který zobrazí že se sešit bude zavírat. Po tom to příkazu jde už vše správně.

Honza

Přidáno: 23.07.14 10:00

Dobrý den, jak lze zjistit, je-li ještě nějaký sešit otevřený abych mohl pak zavřít celý Excel? Děkuji

Veronika

Přidáno: 14.07.16 10:46

Dobrý den, vytvořila jsem makro pro automatické zavření po 15 minutách Application.OnTime Now + TimeValue("00:15:00"), "Konec" Toto normálně funguje, ale pokud zavřu sešit o něco dříve, tak se mi v daný čas soubor otevírá, aniž bych se o to snažila. Děkuji za radu

Jojo

Přidáno: 15.07.16 07:12

To Veronika: -- Predčasné ukončenie OnTime(Netestované): Vložiť do bežného modulu: Public dTime As Date Sub RunOnTime() dTime = Now + TimeValue("00:15:00") Application.OnTime dTime, "Konec" End Sub Vložiť do modulu ThisWorkbook: Private Sub Workbook_BeforeClose(Cancel As Boolean) 'CancelOnTime Application.OnTime dTime, "Konec", , False End Sub

Veronika

Přidáno: 29.07.16 06:54

Moc děkuji za odpověď, již to funguje jak má

Venca

Přidáno: 30.08.16 12:55

Zdravím, mám problém, u kterého netuším jak dál. Mám soubor ve kterém se pouští automaticky po zpuštění Form do kterého načítám data. Po potvrzení ve formuláři otevře dle podmínek další soubor a schovám Form menu abych mohl v souboru pracovat. Potreboval bych aby se po zavrení souboru se opět otevřelo Formmenu. Díky


Přidání nového komentáře

Poznámka: Z časových důvodu není v mých sílách zodpovědět všechny dotazy. Děkuji za pochopení.




(vlož číslo padesátpět)

Z bezpečnostních důvodu dočasně nemůžete použít HTML značky, kromě <code> a </code> (pro vkládání VBA kódu). Děkuji za pochopení.
Děkuji, za Vaše komentáře.

Za obsah komentářů neodpovídám, jelikož jsou komentáře publikovány ihned po jejich napsání čtenářem. Toto nemohu nijak ovlivnit. Přesto si vyhrazuji možnost jakýkoli neslušný komentář smazat bez udání důvodu. V komentářích si tykáme. ;-)






Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Newsletter

Přihlaste se odběru novinek a získejte:
Ebook zdarma -
10 kroků ke zvládnutí (Word, Excel, PowerPoint)
Šipka Kniha 3D Více o ebooku ...

TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2016 | 20539

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.