< návrat zpět

MS Excel


Téma: jak dokončit Refresh před další akcí? rss

Zaslal/a 15.9.2021 11:36

ahoj, prosím o radu, jsem v makrech teprve začátečník
Máme několik souborů excelu, které potřebuji pravidelně aktualizovat z exportovaných dat.
Narovnal jsem je tedy do makra, aby se jeden po druhém otevřely, uložily a zase zavřely.
Potud vše proběhne, ale i když je u nich nastaven automatický Refresh po otevření, tento neproběhne.
Přidal jsem tedy po otevření příkaz Refresh, část makra tedy vypadá takto:

Workbooks.Open Filename:= _
"P:\Zakázky\Praha 2021.xlsx", WriteResPassword:="inc"
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
ActiveWindow.Close
Workbooks.Open Filename:= _
"P:\Zakázky\Plzeň 2021.xlsx", WriteResPassword:="inc"


Příkaz Save ale nečeká na ukončení Refresh a makro se zastaví.
Je nějaký jednoduchý způsob, aby jeden příkaz čekal na ukončení předchozího?
Děkuji Maty

Zaslat odpověď >

#051208
avatar
Ahoj.

Co tak vložit:

ActiveWorkbook.RefreshAll
MsgBox „Vše bylo aktualizováno!“
S otázkou zda uložit či nikoliv.citovat
#051209
avatar
Těch souborů je takhle za sebou cca 20 a potřebuji, aby to proběhlo automaticky samo, třeba v noci, kdy je nemá nikdo otevřené.citovat
#051212
avatar
Otázka je jednoduchá, ale popis je na článek. V excelu těch možných aktualizací je docela dost a způsoby se v různých případech liší.

Napovím aspoň směr pátrání.

Nejjednodušší je v makru před uložením prostě počkat nějakou dobu, je to jednoduché, univerzální a po vyladění doby i přiměřeně spolehlivé.

V některých případech může pomoci DoEvents.

U řady objektů je problém s aktualizací na pozadí (pq, kont. tab, ...). Tady je nutné aktualizaci na pozadí zakázat - u různých objektů se to dělá různě - aktualizovat a obnovit nastavení.

Aby to bylo zábavnější, např. při aktualizaci dotazů pq, se při aktualizaci jednoho dotazu aktualizují i všechny zdrojové dotazy, pokud existují, bez ohledu na to, kdy byly akualizované, tj. běžně i několikrát. Tady obvykle ve smyčce kontroluju, jestli aktualizace doběhla.citovat
#051225
avatar
Zkusil jsem tedy to nejjednodušší a aktualizace se neprovedla, i když jsem dal dobu čekání 10 sekund 7 6
Příkaz Refresh zůstal na pozadí a ani se nespustil.
Příloha: png51225_chyba.png (4kB, staženo 27x)
51225_chyba.png
citovat
#051228
avatar
Tak jsem zkoušel, až jsem našel 10 5
Funguje to na:

Selection.ListObject.QueryTable.Refresh BackgroundQuery:=False

Ale i tak díky za snahu.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