Windows 为什么Excel从命令行启动时在退出时抛出异常?
我有一个简单的Excel文件,它在数据库打开时查询,然后自动关闭Windows 为什么Excel从命令行启动时在退出时抛出异常?,windows,excel,vba,cmd,Windows,Excel,Vba,Cmd,我有一个简单的Excel文件,它在数据库打开时查询,然后自动关闭 如果我双击文件从Windows资源管理器(我运行的是Windows XP和Excel 2002)中打开它,它就可以正常工作 但是,如果我在另一个Excel实例的单独文件中使用Excel“C:\DataUpdate.xls”from Start>run或fromShell,Excel将在退出时崩溃 我不明白为什么它在一个场景中成功,而在另一个场景中却没有成功 在DataUpdate.xls中,我有两个过程,UpdateTable
- 如果我双击文件从Windows资源管理器(我运行的是Windows XP和Excel 2002)中打开它,它就可以正常工作李>
- 但是,如果我在另一个Excel实例的单独文件中使用
from Start>run或fromExcel“C:\DataUpdate.xls”
,Excel将在退出时崩溃李>Shell
UpdateTable()
和OnWorkbookOpen()
,在工作簿打开时从Workbook\u 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
应用程序:10.0.6854.0
ModName:olconnector.dll
模式:2.0.2303.0
偏移量:000114d5
为什么会有不同的行为取决于我如何启动应用程序,我可以做些什么,使应用程序的行为与我如何启动应用程序的行为相同?当我只将命令应用程序。退出到函数工作簿\u Open()中时,通过双击启动时,在这里工作正常,通过命令test.xlsm
以及通过命令“c:\Program\Microsoft Office\Office12\EXCEL.EXE”test.xlsm
- 您是否也尝试将问题简化为一个命令
- 从命令行使用哪个命令
- 也许您可以尝试将
DoEvents
放在应用程序之后。是否保存命令
- 是否尝试将命令
Excel.Application.Quit
更改为Application.Quit
?也许从命令行开始时会有不同
我在WinXP Pro上使用Excel 2007。根据google的说法,olconnector.dll是outlook connector,一个office加载项
因为它处理的是Outlook,我相信它会对您在机器上使用的登录名有一定的依赖性
打开excel时,您使用的凭据是否与登录计算机时使用的帐户相同
ProcessStartInfo startInfo = null;
Process batchProcess = null;
startInfo = new ProcessStartInfo();
startInfo.Domain = "somedomain";
startInfo.UserName = "Domainuser";
startInfo.Password = "pwd";
不太确定错误是什么,但这是可以尝试的。使用“命令”字符串不是比检查文件名来说明退出应用程序的原因更舒服吗?它提供了检查命令行参数的可能性?这样,您就可以使用如下命令行参数启动Excel:“c:\Program\Microsoft Office\Office12\Excel.EXE”test.xlsm noQuit,这样您就不必每次都更改名称。此外,您还可以在Excel文件类型的弹出菜单中执行新命令。请查看此示例。谢谢您的建议。我得好好玩玩。-我只是试着把它限制在应用程序范围内。退出。没用从cmd:EXCEL.EXE“C:\DataUpdate.xls”-将DoEvents放在应用程序之后。退出不起作用-我将其更改为应用程序。退出-不起作用-如果不是Office Live加载项导致问题,我将受到谴责+谢谢你的链接和提示。我从来没有想到会有这么模糊的东西导致这个问题。卸载Office Live插件v1.3修复了这个问题。