如何使用vbscript获取运行excel实例的工作簿名称?

Pra*_*hvi 4 vbscript excel

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实例是否正在运行.即使工作簿名称作为脚本中的硬编码输入传递也不是问题.我将根据我的工作簿名称进行更改.

感谢您之前的回复,等待这一个.. :))

bre*_*tdj 6

如果您可能打开了多个实例,而不是检测特定工作簿是否已打开,则可以使用:

  1. 此代码用于检查所有实例中的所有打开的工作簿可以VBA到达Excel的实例吗?
  2. 检测文件是否已被使用.从检测Excel工作簿是否已打开,请参阅Sid的建议
  3. Doug的建议用于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)

  • +1代码中早期在OERN和OEGT0之间将它们夹在中间是最好的方法:) (2认同)

J P*_*J P 1

您可以使用以下命令捕获活动工作簿名称。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)