< návrat zpět

MS Excel


Téma: Application.Ontime rss

Zaslal/a 22.11.2017 16:44

Dobrý den, chtěl bych poradit, jak napsat makro, co zastaví VBA on time: RunEveryTwoMinutes, aby se mi dokument neukládal, pokud nechci, když provádím změny a tak, děkuji moc za radu. :)

Private Sub Workbook_open()
RunEveryTwoMinutes
End Sub

Sub RunEveryTwoMinutes()
Application.Ontime Now + TimeValue("00:02:00"), "RunEveryTwoMinutes"
ActiveWorkbook.Save

End Sub

Zaslat odpověď >

#038433
avatar
Jednou z možností je přidat nějakou podmínku (třeba hodnota konkrétní buňky), která by se pokaždé v makru testovala.
P.citovat
#038490
avatar
To máš zoufale složité. Stačí přece v modulu ThisWorkbook jediná jednoduchá procedura:

Sub Workbook_Open() 'public
Application.Ontime Now + 0.00139, "ThisWorkbook.Workbook_Open" '+2 min
Save 'jsi v modulu ThisWorkbook, tak tohle přece stačí
End Sub

A mimochodem - ukládáním sešitu každé 2 minuty budeš mít na disku neuvěřitelně nafouknuté monstrum. Ty nevíš, že Excel ochotně ukládá i uložený soubor (na rozdíl od Wordu) a s každým uložením ho zlovolně zvětší?citovat
#038497
avatar
Děkuji za rady, jedná se mi o to, že excel každý den vypnu a zapnu přes VBA a tím pádem mi běží makro 2* za dva dny se spouští 3* atd... což je velmi neefektivní a tak se musí počítač restartovat.

Sub CloseMe()
ActiveWorkbook.Save
Application.Ontime Now + TimeValue("00:00:10"), "OpenMe"
ActiveWorkbook.Save
ThisWorkbook.Close False
End Sub

Zavírám to, protože některá makra mi fungují jen 24h:

Application.Ontime TimeValue("21:59:00"), "OnTime"
Application.Ontime TimeValue("13:59:00"), "OnTime"
Application.Ontime TimeValue("05:59:00"), "OnTime"

kdyby fungovali neustále v tuto dobu, tak bych nemusel vypínat Sub RunEveryTwoMinutes(), neběželo by mi vícekráte.

A na otázku zda soubor narůstá je odpověď: z 800kb cca na 2MB za měsíc.citovat
#038565
avatar
K tomu svévolnému narůstání souboru XLSM, které je způsobeno tím, že Excel (přesněji: manažeři programátorů Excelu) vědomě po sobě neuklízí (a jen prasata po sobě neuklidí):
1. Otevři prázdný Excel, zvol menu Soubor / Možnosti a v okně možností zvol Centrum zabezpečení / Nastavení Centra zabezpečení. V jeho oknu zvol Nastavení maker a zakaž makra, vše potvrď (2x OK) a zavři Excel.
2. Otevři svůj sešit, otevři editor VBA a v něm dej příkaz k uložení (ctrl+S). Zavři editor i Excel a soubor bude výrazně menší.
3. Novým otevřením prázdného Excelu a postupem podle bodu 1 povol makra.citovat
#038567
avatar
Jo, ještě toto: Abych uživatelům i sám sobě zabránil v ukládání uloženého sešitu (a tím jeho dalšímu nafukování), ošetřuji v modulu ThisWorkbook událost Workbook_BeforeSave:

img

Vysvětlivky:

1. bSavAs = zda je sešit ukládán pod novým jménem
bCanc = nastavením na True k uložení nedojde

2. Kec = má subrutina v hlavním modulu, která aktivuje speaker; užívám ji, protože na uživatele často potřebuji mluvit:
img

3. Texty pro Kec musí být napsány tak, aby je anglicky mluvící speaker přečetl přibližně správně česky.citovat
#038568
avatar
Promiň, nenapsaly se ty dvě subrutiny, zkouším je napsat znovu:

DefBool B

Private Sub Workbook_BeforeSave(ByVal bSavAs, bCanc)
bCanc = Saved And Not bSavAs
Kec IIf(bCanc, "Serroo nutto", "Hooklaadaam")
End Sub


Sub Kec(s$)
Application.Speech.Speak s, True
End Sub
citovat

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

Čas od do

lubo • 19.4. 16:30

Makro smyčka

MilanKop • 19.4. 10:46

Makro smyčka

elninoslov • 19.4. 9:02

Čas od do

elninoslov • 19.4. 8:46

Čas od do

jarek1111 • 18.4. 13:46

Čas od do

lubo • 18.4. 11:13

Čas od do

jarek1111 • 18.4. 8:32