2009-11-11 68 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

相關問題