2011-09-22 58 views
1

當我打開通過以下VBA代碼在MS Access擅長:MSACCESS VBA代碼無法打開Excel工作表Excel是否已經運行

 Set objApp = GetObject(, "Excel.Application") 
     Set objApp = CreateObject("Excel.Application") 
     objApp.Visible = True 
     Set wb = objApp.Workbooks.Open("\\bk00sql0002\D_Root\Pre-Manufacturing\Excel\CommitmentLetter.xls", True, False) 

它不會打開,如果Excel應用程序已在運行。我需要先關閉已運行的Excel應用程序,然後運行上面的代碼,它會打開Excel。

即使它已經在運行,我如何獲得Excel打開?謝謝!

+0

如果這是由幾個人使用,他們可能會更喜歡你檢查是否有一個實例,只是使用它,而不是關閉他們在Excel中打開的工作:http://msdn.microsoft.com/en-us/library/e9waz863(v=vs.71).aspx – Fionnuala

+0

@Remou is there a簡化msdn提供的代碼的方法?似乎有點複雜。 – Bruno

+0

@Remou:不是你提出的有關文件上多個用戶爭用的問題,而不是多個Excel實例?據我所知,用戶(即使在終端服務器上)也無法捅入另一個用戶的內存,並對其正在運行的應用程序進行任何操作。 –

回答

2

事情是這樣的:

On Error Resume Next 

Set objApp = GetObject(, "Excel.Application") 

Do While Not objApp Is Nothing 
    objApp.Quit 
    Set objApp = GetObject(, "Excel.Application") 
Loop 

On Error GoTo 0 

Set objApp = CreateObject("Excel.Application") 

你可能還需要處理的情況時,Excel將不會退出。


UPDATE

要使用現有的運行實例(而不是殺死它):

On Error Resume Next 

Set objApp = GetObject(, "Excel.Application") 

On Error GoTo 0 

If objApp Is Nothing Then 
    Set objApp = CreateObject("Excel.Application") 
End if 
+0

感謝yoU的漂亮代碼! – Bruno

+0

你能告訴我@Remou正在談論的代碼嗎? – Bruno

+0

@布魯諾:看到更新。 – onedaywhen