我有一个简单的Excel文件,可以在数据库打开时查询数据库,然后自动关闭。
Excel "C:\DataUpdate.xls"
运行它在单独的文件中运行或从另一个Excel实例中的Shell
运行,Excel将在退出时崩溃。 我无法弄清楚为什么它会在一个场景中而不是在另一个场景中。
在DataUpdate.xls中,我有两个程序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
为什么根据我启动应用程序的方式会有不同的行为,以及我可以做什么,以便应用程序的行为相同,无论我如何启动它?
答案 0 :(得分:3)
根据google 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 :(得分:0)
当我只将命令application.quit
放入函数Workbook_Open()时,它可以正常工作,当我通过doubleclick,通过命令test.xlsm
以及通过命令"c:\Programme\Microsoft Office\Office12\EXCEL.EXE" test.xlsm
启动它时。
DoEvents
命令之后添加Application.Save
Excel.Application.Quit
更改为Application.Quit
?从命令行开始可能会有所不同。我在Win XP Pro上使用Excel 2007。