2013-08-29 6 views
2

일부 장기 실행 VBA 코드 (24 시간/일 실행)를 수행하는 중 때때로 Excel이 멈추거나 충돌이 발생하며 프로그래밍 방식으로 Excel을 다시 시작하는 방법을 검토하고 있습니다. 이것에 대해 가장 좋은 방법에 대한 조언을 주시면 감사하겠습니다.Excel의 강제 종료를 자동화하고 다시 시작하는 방법은 무엇입니까?

내가 가진 한 가지 아이디어는 잠재적으로 '이벤트 이름 : APPCRASH'및 'Faulting application EXCEL.EXE'와 같은 오류 이벤트를 기록하는 Windows에 의해 잠재적으로 트리거 될 수있는 dotnet 앱을 작성하는 것입니다. 이것이 실현 가능/합리적인 방법이 있다면.

필자가 현명한 접근 방법이 될 경우, 나는 잠재적으로 다음과 같은 작업을 수행 할 것입니다.

1) "문제에 대한 추가 정보를 보내시겠습니까?", "Microsoft Excel이 작동을 멈췄습니다."또는 "Microsoft Excel이 정보를 복구하려고합니다."와 같은 창 오류 팝업 상자를 자동으로 닫거나 취소하십시오. "

2) 강제 가까이 다시 시작 엑셀

인가) 예를 들면 걸려있는 경우 (여전히 열려있는 경우) 엑셀뿐만 아니라 어떤 Excel.exe를 죽이는 등

3 처리는 DOTNET 이러한 응용 프로그램을 작성할 수 있습니다? 추가 정보를 찾으려면 어떤 참조/태그를 찾아야합니까?

덕분에, 하기 Yug

답변

3

일부 파고 후, 나는 다음과 같은 솔루션을 함께 조합해서. 아래의 vbs 코드는 taskkill을 처리하지 않는 excel.exe 프로세스를 강제 실행 한 다음 명시된 Excel 파일을 엽니 다.이 파일에서 vba 코드는 worksheet_open 이벤트에서 자동으로 다시 시작될 수 있습니다.

1) Windows 오류보고 끄기 : 시작, 검색 '문제 보고서 및 해결 방법', 변화 설정, 고급 설정, 엑셀에 대한

2) 사용 안 함 자동 복구보고 해제 문제 :에 WB 내 을 질문, 클릭; 파일, 옵션, 저장,이 WB만의 파일 복구 비활성화

3) Windows 이벤트 뷰어, 응용 프로그램 로그에서 오류 (오류가있는 Excel 응용 프로그램) 4)에서 선택한 파일 이름을 입력하십시오.

4) (.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 & "\root\cimv2") 
    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 
+0

감사 텍스트 파일에 다음 코드를 붙여 및 VBScript 파일로 저장 'Workbook.EnableAutoRecover = false를' –

+0

이 문제에 좋은 찌르기가 있습니다. 그러나이 메서드는 일반적으로 Excel 시작시로드 될 수있는 사용자 지정 추가 기능을 잃습니다. – Robino