< 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

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje