我使用Task Scheduler來管理在Workbook X中啓動vba子過程的VBScript。此過程打開兩個其他工作簿並將數據移動到工作簿X並再次關閉它們。程序結果是我需要保存的更新的工作簿X. VBA過程正常工作,並按預期由VBScript觸發。但是,應該保存文件的VBScript部分不起作用。 VBScript是基於我在Stackoverflow.com和其他網站上找到的代碼。 當我打開文件X時,我嘗試用VBScript保存,它讓我決定是否要保存該文件。如果我這樣做,我可以看到上述過程創建的數據已經工作。 我可以在任務管理器中看到我用VBScript創建的Excel實例永遠不會關閉,儘管我試圖在VBScript中執行它。我也嘗試了Save方法,但沒有運氣。我嘗試過不同運行方式的參數。我在本網站和其他網站上搜索該問題如何解決。但是,他們建議使用Save和SaveAs方法,並且我嘗試了使用不同的建議參數配置而沒有成功。退出Excel應用程序的VBScript/VBA受標準Excel事件影響
我現在已經找到了根本原因,但不是解決方案。它與劇本本身無關。在打開的工作簿事件中。 我有激活一個用戶窗體(StartUpForm.Show)的代碼。在關閉和打開事件之前的工作簿中,我調用過程RemoveFilter,它刪除一組過濾數據上的過濾器。如果我將UserForm.Show和Before關閉工作簿事件中的RemoveFilter標記爲符號,它將起作用。避免調用StartUpForm.Show是不夠的。 StartUpForm.Show需要標記爲符號或刪除。怎麼可能?是否有解決方法?
這不起作用:
Private Sub Workbook_Open()
Dim batRun As Boolean
RemoveFilter
ResolveStartUp (batRun)
If Not batRun Then
StartUpForm.Show vbModal
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
RemoveFilter
End Sub
這工作:
Private Sub Workbook_Open()
Dim batRun As Boolean
RemoveFilter
ResolveStartUp (batRun)
If Not batRun Then
' StartUpForm.Show vbModal
End If
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' RemoveFilter
End Sub
的VBScript:
On Error Resume Next
ImportAccesFilesToHolidaysAndWorkshops
Sub ImportAccesFilesToHolidaysAndWorkshops()
Dim xlApp
Dim xlBook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open ("Z:\ResourceManagement\Holiday and workshops input.xlsm", 0, False,,,,,,,,True)
xlApp.Run "ImportResourcesAndProjects"
xlApp.ActiveWorkbook.Close
xlBook.SaveAs "Z:\ResourceManagement\Holiday and workshops input.xlsm",,,,,,xlExclusive, xlLocalSessionChanges
xlBook.Close
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
WScript.Echo "Finished."
WScript.Quit
End Sub
嘗試使用'xlBook.Save'如果您期望覆蓋現有文件 - '.SaveAs'is試圖保存文件 – Dave
謝謝副本爲您的輸入。我試過了。但是,如果您閱讀我編輯的問題描述,您會看到我找到了問題,但不是解決方案。 –