我怎么能写代码来说。
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
我不希望它必须是一个特定的工作簿,我似乎无法在互联网上找到任何工作簿。任何帮助都会很棒。
答案 0 :(得分:6)
首先尝试使用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
答案 1 :(得分:3)
我曾经运行的代码与蒂姆非常相似,直到凯文·琼斯在专家交流的帖子中指出我将在这里重复(因为EE帖子在付费墙后面)
“请注意,使用CreateObject函数通过自动化启动Excel时,Excel不会加载任何正常自动加载的加载项或其他工作簿。这不是启动将使用的Excel会话的好方法要在不使用Excel以外的任何应用程序的自动化的情况下启动Excel应用程序实例,必须使用非自动化方式启动Excel应用程序。下面的代码说明了执行此操作的步骤。代码首先尝试获取自动化处理现有应用程序实例。如果找不到现有实例,则使用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
答案 2 :(得分:1)
这可能会走向错误的方向,但这是我过去曾经使用过的东西..
If Workbooks.Count > 1 Then 'Or in your case = 0
'Do Something Here'
Else
'Do Something Else'
End If
这样会告诉您是否打开了多个工作簿。否则,听起来你正在寻找特定的东西是否开放。
希望有所帮助。