2009-11-11 55 views
1

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

为什么会出现不同的行为,根据我如何启动应用程序提示和我能做什么,以便应用程序的行为相同,无论我如何启动它?

+1

而不是检查文件名来描述/反对退出应用程序,使用“命令”字符串不是更舒服吗?它提供了检查命令行参数的可能性吗?这样,您可以使用如下命令行参数启动Excel: “c:\ Programme \ Microsoft Office \ Office12 \ EXCEL.EXE”test.xlsm noQuit 因此,您无需每次都更改名称。此外,您可以在Excel文件类型的弹出式菜单中创建一个新命令。 – Marco 2009-11-11 18:11:00

+0

查看这个http://vbadud.blogspot.com/2007/05/visual-basic-command-line-arguments.html的例子。 – Marco 2009-11-11 18:12:05

+0

感谢您的建议。我将不得不玩这个。 – 2009-11-11 19:37:15

回答

3

根据谷歌olconnector.dll是Outlook连接器,一个办公室加载项。

http://ask.officelive.com/workspace/qna/t/4578.aspx

因为它在处理与Outlook,我相信它会对你正在使用的机器上登录了一些依赖。

当您打开excel时,您是否使用与登录到计算机的帐户相同的凭据?

ProcessStartInfo startInfo = null; 
Process batchProcess = null; 

startInfo = new ProcessStartInfo(); 
startInfo.Domain = "somedomain"; 
startInfo.UserName = "Domainuser"; 
startInfo.Password = "pwd"; 

不确定错误是什么,但这是你可以尝试的。

+1

如果它不是我的, t导致问题的Office Live插件! +1的链接,并感谢提示。我从来不会想到一些晦涩的东西会成为问题的原因。 – 2009-11-11 19:54:54

+1

卸载Office Live Add-in v1.3修复了此问题。 – 2009-11-11 19:56:17

0

当我只能把命令application.quit到功能Workbook_Open()它工作在这里很好,当我通过DoubleClick启动它,通过命令test.xlsm以及通过命令"c:\Programme\Microsoft Office\Office12\EXCEL.EXE" test.xlsm

  • 您是否也尝试将问题简化为只有一个命令?
  • 你从命令行使用哪个命令。
  • 也许你可以尝试在Application.Save指令后放DoEvents
  • 您是否尝试将命令Excel.Application.Quit更改为Application.Quit?也许从命令行开始时这是不同的。

我在Win XP Pro上使用Excel 2007。

+0

- 我只是想限制它只是application.quit。没有工作。 - 从cmd:EXCEL.EXE“C:\ DataUpdate.xls” - 将DoEvents放在Application.Quit后不起作用 - 我将其更改为Application.Quit - 没有工作 – 2009-11-11 18:21:02

相关问题