如果Excel工作簿打开,那么… VBA

我怎么能写代码说呢。

Dim xlApp As Excel.Application Dim xlWorkbook As Excel.Workbook Dim xlWorksheet As Excel.Worksheet 

如果一个Excel工作簿已经打开,那么….

  Set xlApp = GetObject(, "Excel.Application") elseif xlApp is nothing then Set xlApp = New Excel.Application xlApp.Visible = True Set xlWorkbook = xlApp.Workbooks.Open("E:\InspectionCreator\InspectionSheet.xlsx") End if 

我不希望它必须是一个特定的工作簿,只是任何工作簿,我似乎无法在互联网上find任何东西。 任何帮助都是极好的。

首先尝试使用getobject:如果它抛出一个错误,然后使用createobject:

  Dim xlApp As Excel.Application On Error Resume Next Set xlApp = GetObject(, "Excel.Application") On Error GoTo 0 If xlApp Is Nothing Then Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True End If 

我曾经运行类似于Tim的代码,直到Kevin Jones在一篇专家交stream的文章中指出,我将在这里重复一遍(因为EE文章是在paywall的后面)

“请注意,使用CreateObject函数通过自动化启动Excel时,Excel不会加载任何通常自动加载的加载项或其他工作簿,但这不是启动用户使用的Excel会话的好方法。一个Excel应用程序实例,而不使用自动化以外的任何应用程序的自动化,Excel应用程序必须启动使用非自动化的手段下面的代码说明了这样做的步骤代码首先尝试获取现有的应用程序实例的自动化句柄。如果没有find现有的实例,则使用Shell命令启动一个新的实例。“

  Dim ExcelApplication As Object Dim TimeoutTime As Long On Error Resume Next Set ExcelApplication = GetObject(, "Excel.Application") On Error GoTo 0 If ExcelApplication Is Nothing Then Shell "Excel.exe" TimeoutTime = Timer + 5 On Error Resume Next Do DoEvents Err.Reset Set ExcelApplication = GetObject(, "Excel.Application") Loop Until Not ExcelApplication Is Nothing Or Timer > TimeoutTime On Error GoTo 0 End If If ExcelApplication Is Nothing Then MsgBox "Unable to launch Excel." Else ' Do something with the Excel instance... End If 

这可能是错误的方向,但这是我以前用过的东西..

  If Workbooks.Count > 1 Then 'Or in your case = 0 'Do Something Here' Else 'Do Something Else' End If 

这样它会告诉你,如果你有多个工作簿打开。 否则,这听起来像你正在看看是否有特定的东西是开放的。

希望有所帮助。