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"
Run Code Online (Sandbox Code Playgroud)
嘿,非常感谢伙计.这真的让我接近所寻找的东西,更接近解决方案.让我告诉你我的确切要求/问题:实际上我的问题是,从Java我试图找到具有特定工作簿名称的Excel实例,但即使它出现也没有返回Excel实例.在我的情况下,我打开了一个Excel,其中包含2个工作簿"Book1"和"Book2".当我试图找到任何这些工作簿名称的Excel时,没有给出任何结果.要缩小范围,只能在我的一台客户端计算机上观察到此问题.在休息机上这个相同的java代码工作正常.这在卸载Excel2010并安装Excel2007后开始发生.
所以我想要做的是,想要创建一个vbscript,我可以将workbookname作为输入,它将返回我是否有这样的Excel实例运行与给定的工作簿名称.
嘿,请指导我进一步创建这样的脚本,我将给出工作簿名称和脚本将查找此类Excel实例是否正在运行.即使工作簿名称作为脚本中的硬编码输入传递也不是问题.我将根据我的工作簿名称进行更改.
感谢您之前的回复,等待这一个.. :))
如果您可能打开了多个excel实例,而不是检测特定工作簿是否已打开,则可以使用:
GetObject附加到您知道工作簿名称的主机实例.根据Microsoft支持文章,您可以使用它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"""
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令捕获活动工作簿名称。objXL.ActiveWorkbook.Name
Dim objXL, strMessage
On Error Resume Next
Set objXL = GetObject(,"Excel.Application")
If Not TypeName(objXL) = "Empty" then
strMessage = "Excel Running"
WScript.Echo "The active workbook name is " & objXL.ActiveWorkbook.Name
Else
strMessage = "Excel NOT Running"
End If
MsgBox strMessage, vbInformation, "Excel Status"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17777 次 |
| 最近记录: |