如果Excel工作簿已打开,则。。。。。。VBA
我如何编写代码来表示如果Excel工作簿已打开,则。。。。。。VBA,excel,vba,Excel,Vba,我如何编写代码来表示 Dim xlApp As Excel.Application Dim xlWorkbook As Excel.Workbook Dim xlWorksheet As Excel.Worksheet 如果工作簿已打开,则 Set xlApp = GetObject(, "Excel.Application") elseif xlApp is nothing then Set xlApp = New Excel.Applica
Dim xlApp As Excel.Application
Dim xlWorkbook As Excel.Workbook
Dim xlWorksheet As Excel.Worksheet
如果工作簿已打开,则
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
我不希望它必须是一个特定的工作簿,只是任何工作簿,我似乎在互联网上找不到任何东西。任何帮助都会很棒。首先尝试使用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
这可能是在错误的方向,但这里的东西,我用在过去
If Workbooks.Count > 1 Then 'Or in your case = 0
'Do Something Here'
Else
'Do Something Else'
End If
这样,它会告诉您是否打开了多个工作簿。否则,听起来你好像在看是否有特定的东西是开放的
希望这能有所帮助。我以前运行的代码与Tim的非常相似,直到Kevin Jones在一篇专家交流帖子中指出,我将在这里重复(因为EE帖子在付费墙后面) 请注意,当使用CreateObject函数通过自动化启动Excel时,Excel不会加载任何加载项或通常自动加载的其他工作簿。这不是启动用户将使用的Excel会话的好方法。要启动Excel应用程序实例而不使用Excel以外的任何应用程序的自动化,必须使用非自动化方式启动Excel应用程序。下面的代码说明了执行此操作的步骤。代码首先尝试获取现有应用程序实例的自动化句柄。如果未找到现有实例,则使用Shell命令启动新实例。“
这段代码将从何处运行?你在考虑VBScript吗?这些代码将运行solidworks,它与VB6非常独立,如果xlapp什么都不起作用的话。第一部分我对DAM有问题,我不敢相信这是一个很棒的解决方案谢谢你,是的。我喜欢优雅简单的解决方案这是最好的。鉴于您正在自动化Excel,我看不出上面的代码是如何工作的-
工作簿。Count
用于在活动应用程序中运行VBA。如果他使用的程序使用的是Office类的组合,则不会。然后,它可能会被编程为说“请告诉我此时打开了多少工作簿类。”“显然,它确实起了作用。但你是对的,我总是在其他excel表格中使用它。通常是隐藏窗口,使窗体看起来像他们自己的程序。这里总有自鸣得意的程序员,我讨厌,我喜欢这个概念。它将使你的应用程序更加健壮。最好告诉用户它无法启动Excel,而不是典型的“无法创建对象”。
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