Dim objXL, strMessage
On Error Resume Next
Set objXl = GetObject(, "Excel.Application")
If Not TypeName(objXL) = "Empty" then
strMessage = "Excel Running"
Else
strMessage = "Excel NOT Running"
End If
MsgBox strMessage, vbInformation, "Excel Status"
嘿,非常感谢朋友。这确实让我更接近我正在寻找的东西,更接近解决方案。
让我告诉你我的确切要求/问题:
实际上我的问题是,我试图从 Java 中查找具有特定工作簿名称的 Excel 实例,但即使它出现,也不会返回 Excel 实例。就我而言,我打开了一个 Excel,其中有 2 个工作簿“Book1”和“Book2”。
当我尝试查找具有任何这些工作簿名称的 Excel 时,没有给出任何结果。为了缩小范围,仅在我的一台客户端计算机上观察到此问题。在其余机器上,相同的 java 代码工作正常。
卸载 Excel2010 并安装 Excel2007 后开始出现这种情况。
所以我想做的是,想要创建一个 vbscript,在其中我可以将工作簿名称作为输入,它将返回我是否有这样的 Excel 实例以给定的工作簿名称运行。
嘿,请指导我进一步创建这样的脚本,我将在其中提供工作簿名称,脚本将查找此类 Excel 实例是否正在运行。即使工作簿名称作为脚本中的硬编码输入传递,也不是问题。我将根据我的工作簿名称进行更改。
感谢您之前的回复并也在等待这一回复..:))
如果您可能有多个excel实例打开而不是检测特定工作簿是否打开,您可以使用:
- 此代码用于检查所有实例中所有打开的工作簿VBA 可以跨 Excel 实例吗?
- 检测文件是否已被使用。看席德的建议 from 检测Excel工作簿是否已经打开
-
道格的建议 to use
GetObject
附加到您知道工作簿名称的主机实例。根据微软支持文章您可以使用Set xlApp = GetObject("YourExcelName").Application
检测“YourExcelName”是否在任何实例中打开
在您最初提出的问题中,下面的代码使用GetObject
检测是否有任何实例打开,以及是否有ActiveWorkbook
以及那个名字是什么。从您编辑的问题来看,我上面的三个链接比这个代码更相关。
Dim objXL, WB, strMessage
On Error Resume Next
Set objXL = GetObject(, "Excel.Application")
Set WB = objXL.ActiveWorkbook
On Error GoTo 0
If Not TypeName(objXL) = "Empty" Then
If Not TypeName(WB) = "Nothing" Then
strMessage = "Excel Running - " & objXL.ActiveWorkbook.Name & " is active"
Else
strMessage = "Excel Running - no workbooks open"
End If
Else
strMessage = "Excel NOT Running"
End If
MsgBox strMessage, vbInformation, "Excel Status"""
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)