我有一个简单的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