
Takže v súbore "MAKRO.xlsm" bude makro, ktoré naplánuje v udalosti Application.OnTime (na najbližší čas 04:00 v noci) spustenie druhého makra v tomto súbore "MAKRO.xlsm". To druhé makro spustí aktualizáciu všetkých dát v tomto súbore "MAKRO.xlsm", uloží tento súbor. Stále sme v tom istom súbore "MAKRO.xlsm".
A teraz, načo sa má otvárať súbor "MAKRO 1.xlsx" (.xlsm ?), ukladať a zatvárať? Pri jeho otváraní dôjde k nejakej udalosti jeho vlastného makra Workbook_Open či aktualizácii dotazov? Ak nie, tak je popisovaná manipulácia zbytočná.
Jan22(6.10.2022 10:58)citovat#053535 
MAKRO ANO.
MAKRO1 se má otevírat proto, aby se aktualizovali hodnoty (i když to možná udělá) ale hlavně proto, že publikuji MAKRO1 na webu a potřebuji to uložit.

Vyskúšajte to s Vašim súborom a nejakým skorším časom, aby ste nečakal do rána :)
Možno bude treba aktualizovať Connections, PivotTables, Queries aktualizovať samostatne po jednom, s vypnutím BackgroundQuery, aby to čakalo na dokončenie. Neviem, čo tam máte.
Pri pokusoch nezabudnite potom pokusný čas z naplánovaných zmazať pomocou SERVICE_PROC_STOP.
Sub Aktualizacia_Dat()
Dim Cesta As String
With ThisWorkbook
.RefreshAll
Cesta = .Path & "\"
.Save
End With
With Workbooks.Open(Cesta & "MAKRO1.xlsm", True)
.RefreshAll
.Close True
End With
Application.OnTime TimeValue("04:00:00"), "Aktualizacia_Dat"
End Sub
Sub SERVICE_PROC_STOP()
On Error Resume Next
Application.OnTime TimeValue("04:00:00"), "Aktualizacia_Dat", Schedule:=False
End Sub
Jan22(10.10.2022 10:34)citovat#053569 
Ahoj
Udělal jsem to takto: když jsem zakázal aktualizovat data na pozadí, tak čeká až se aktualizuje, pak se otevře, uloží a zavře. Ale bohužel se mi nedaří to spustit v hodinu kterou potřebuji. Když spustím manuálně makro Update, tak to dělá co má. Nějaké nastavení času???
Sub UpdateCell()
Application.OnTime TimeValue("10:28:00"), "Aktualizacia_Dat"
ActiveWorkbook.RefreshAll
Call mojemakro
End Sub
Sub mojemakro()
Workbooks.Open "MAKRO1.xlsm"
Workbooks("MAKRO1").Close SaveChanges:=True
End Sub

A kde máte Application.OnTime s nejakým Vašim volaným makrom? Ja tam vidím iba moje "Aktualizacia_Dat". Také makro Vy neuvádzate. Ak je namiesto môjho "Aktualizacia_Dat" Vaše makro UpdateCell, potom ho musíte volať/nastaviť v Application.OnTime
Application.OnTime TimeValue("10:28:00"), "UpdateCell"
Jan22(10.10.2022 10:59)citovat#053571 
Ano nevšiml jsem si. Tak je to správně? zkoušel jsem ale stejně nic
Sub UpdateCell()
Application.OnTime TimeValue("10:57:00"), "UpdateCell"
ActiveWorkbook.RefreshAll
Call mojemakro
End Sub
Sub mojemakro()
Workbooks.Open "MAKRO1"
Workbooks("MAKRO1").Close SaveChanges:=True
End Sub

Čo znamená "stejně nic"?
Nespustí sa naplánované makro? Mne áno.
Spustí ale neaktualizuje sa? Mne áno.
Neotvorí MAKRO1? Mne áno.
Otvorí ale nezavrie - tu nastáva chyba. Workbooks() potrebuje názov súboru, teda "MAKRO1.xlsm", nie iba "MAKRO1".
Vyhodí nejakú chybu? Mne áno, viď vyššie.
Skúste nepoužiť ActiveWorkbook ale použite to čo ja teda ThisWorkbook. Pretože nie je zaručené, že v momente naplánovaného spustenia makra, bude aktívny zrovna zošit s makrami.
Skúste dať pred Close ešte Save
Sub mojemakro()
With Workbooks.Open(ThisWorkbook.Path & "\" & "MAKRO1.xlsm")
.Save
.Close True
End With
End Sub
Jan22(10.10.2022 12:08)citovat#053576 
Změnil jsem to na ThisWorkbook + .save, ale makro "UpdateCell" se vůbec nespustí.Nemusí se ta funkce třeba někde povolit? Když vyvolám "UpdateCell" ručně jde celá úloha. Když vyvolám "mojemakro" ručně jde taky.
Jan22(10.10.2022 12:23)citovat#053577 
Když vynechám otevření, uložení a zavření. tohle musí fungovat přece ne?
Ale nefunguje
Sub UpdateCell()
Application.OnTime TimeValue("12:21:00"), "UpdateCell"
ActiveWorkbook .RefreshAll
End Sub

Dajme tomu, že je 12:30:00. Aký čas nastavujete v makre? Napr. 12:32:00? Musí sa spustiť o 12:32:00. Potom ako sa vykoná, je opäť naplánované na 12:32:00 ale nie dnes.
Urobte pokus, nastavte v tomto pokusnom makre čas teraz + 2 min, aby ste mal čas. V makre UpdateCell nastavte čas teraz + 4 min. Spustite toto makro Pokus. O 2 min sa spustí makro UpdateCell, to prebehne a svoje ďalšie spustenie nastaví o ďalšie 2 min. Teda behom 4 min, uvidíte 2x spustenie makra UpdateCell. A ďalšieho sa dočkáte až zajtra (teda to je predpoklad, že to tak funguje, nikdy som neskúšal čakať deň).
Sub Pokus()
Application.OnTime TimeValue("12:32:00"), "UpdateCell"
End Sub
Sub UpdateCell()
Application.OnTime TimeValue("12:34:00"), "UpdateCell"
ThisWorkbook.RefreshAll
Call mojemakro
End Sub