我有一個簡單的Excel文件,當它打開時查詢數據庫,然後自動關閉。爲什麼Excel從命令行啓動時在退出時拋出異常?
- 如果我在Windows資源管理器(我正在運行Windows XP和Excel 2002)中雙擊文件以打開它,它可以正常工作。
- 但是,如果我使用開始>運行中的
Excel "C:\DataUpdate.xls"
或在Excel的另一個實例中的Shell
在單獨的文件中運行它,Excel將在退出時崩潰。
我不明白爲什麼它這樣做,而不是其他。
在DataUpdate.xls中,我有2個過程,UpdateTable()
和OnWorkbookOpen()
,在工作簿打開時從Workbook_Open()
調用。
Option Explicit
Sub UpdateTable()
Dim ws As Worksheet
Dim qt As QueryTable
Set ws = Worksheets("Sheet1")
Set qt = ws.Range("A1").QueryTable
qt.Refresh BackgroundQuery:=False
End Sub
Sub OnWorkbookOpen()
On Error Resume Next
If ActiveWorkbook.Name = "DataUpdate.xls" Then
'I put this If statement in so I can change the file's
'name and then edit the file without code
'running.
UpdateTable
ActiveWorkbook.Save
Excel.Application.Quit
End If
End Sub
如果我從Windows資源管理器打開文件,一切都很好。如果我從Excel "C:\DataUpdate.xls"
的命令行運行它,代碼運行良好,直到應用程序嘗試退出Application.Quit
,此時Excel引發異常。
當我查看錯誤報告的詳細信息,這裏的一些信息,我覺得:
AppName的:EXCEL.EXE
AppVer:10.0.6854.0
的modname:olconnector.dll
ModVer :2.0.2303.0
偏移:000114d5
爲什麼會出現不同的行爲,根據我如何啓動應用程序提示和我能做什麼,以便應用程序的行爲相同,無論我如何啓動它?
而不是檢查文件名來描述/反對退出應用程序,使用「命令」字符串不是更舒服嗎?它提供了檢查命令行參數的可能性嗎?這樣,您可以使用如下命令行參數啓動Excel: 「c:\ Programme \ Microsoft Office \ Office12 \ EXCEL.EXE」test.xlsm noQuit 因此,您無需每次都更改名稱。此外,您可以在Excel文件類型的彈出式菜單中創建一個新命令。 – Marco 2009-11-11 18:11:00
查看這個http://vbadud.blogspot.com/2007/05/visual-basic-command-line-arguments.html的例子。 – Marco 2009-11-11 18:12:05
感謝您的建議。我將不得不玩這個。 – 2009-11-11 19:37:15