2011-09-22 81 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

相关问题