/ Ako automatizovať nútené uzavretie programu Excel, po ktorom nasleduje reštart? - Excel, havárie, udalosť-log, forceclose, hlásenie o chybách okien

Ako automatizovať nútené uzavretie programu Excel, po ktorom nasleduje reštart? - Excel, havárie, udalosť-log, forceclose, hlásenie o chybách okien

Príležitostne excelovať zamrzne alebo havaruje, kýmvykoná nejaký dlho bežiaci kód VBA (beží 24 hodín / deň) a skúmam spôsoby, ako zvládnuť reštartovanie programu programovo, akákoľvek rada o najlepšom spôsobe, ako to urobiť, by bolo ocenené.

Jedna myšlienka, ktorú mám, je napísať dotnet appmôže byť potenciálne spustená napríklad hlásením chyby pri zaznamenávaní okien, ako je "Názov udalosti: APPCRASH" a "Chyba aplikácie EXCEL.EXE", ale nemám tušenie, či je to možné / rozumné.

Ak sa stane, že je to rozumný prístup, predstavoval by som, že aplikácia môže vykonávať nasledujúce úlohy;

1) Automaticky zatvorte / zrušte všetky popup okien v oknenapríklad "Chcete odoslať viac informácií o probléme?", "Microsoft Excel prestal pracovať" alebo "Microsoft Excel sa pokúša obnoviť vaše informácie".

2) Vynútené zatvorenie programu Excel, ak je stále otvorené (napr. Ak visí), ako aj zabitie všetkých procesov programu excel.exe

3) Reštartujte program excel

Je možné napísať takúto aplikáciu v dotnet? Aké referencie / značky by som mal hľadať ďalšie informácie?

Vďaka, Yug

odpovede:

3 pre odpoveď č. 1

Po nejakom kopaní som si zapolnasledujúce riešenie. Vbs kód nižšie bude tlačiť taskkill všetky vynikajúce excel.exe procesy, a potom otvorí uvedený súbor Excel (z ktorého vba kód môže byť automaticky reštartované z udalosti workheet_open).

1) Vypnite hlásenie o chybách systému Windows: Začnite, vyhľadajte hlásenia problémov a riešenia problémov, zmeňte nastavenia, rozšírené nastavenia, vypnite hlásenie problémov

2) Zakázať automatické obnovenie pre program Excel: V príslušnom WB kliknite na; súbor, možnosti, uložiť, zakázať obnovenie súborov len pre tento WB

3) V okne prehliadača udalostí v programe aplikácie, zvýraznite chybu (chyba aplikácie Excel), kliknite pravým tlačidlom myši na "vytvoriť základnú úlohu", spustite aplikáciu / skript a zadajte zvolený názov súboru do 4).

4) Vložte nasledujúci kód do textového súboru a uložte ho ako súbor vbScript (.vbs)

Option Explicit

KillProcesses
ExcelRestart

Sub ExcelRestart()
Dim xlApp
Dim xlBook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open("C:...test.xlsx")
xlApp.visible = True
xlBook.activate
Set xlBook = Nothing
Set xlApp = Nothing
End sub

Sub KillProcesses
On error resume next
Dim objWMIService, WshShell
Dim proc, procList
Dim strComputer, strCommand
strCommand = "taskkill /F /IM excel.exe"
strComputer = "."
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:"& "{impersonationLevel=impersonate}!\"& strComputer & "rootcimv2")
Set procList = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = "excel.exe"")
For Each proc In procList
WshShell.run strCommand, 0, TRUE
Next

End sub