打开多个 Excel 文件时检查特定 Excel 文件是否打开并激活它

2024-06-26

编辑:在将特定 Excel 文件或其窗口放在前面之前,我需要检查它是否正在运行/仍然打开。

老问题: 我想将特定的 Excel 窗口设置在前面。

使用此 VBScript 代码,我可以通过名称激活一个 Excel 窗口。但由于打开了多个 Excel 窗口,因此它不再起作用。在这种情况下,它将找不到所需的窗口,并且无法检查它是否打开。所以它总是说ExcelFileName没有打开。

Set WshShell = WScript.CreateObject ("WScript.Shell")
if WshShell.AppActivate(ExcelFileName) = True then
    wscript.echo ExcelFileName & " is opened."
    WshShell.sendkeys "%x" 'in Excel 2003 this would had opened the extra-menu-droplist of the menu-bar. Now it just activates Excel.
else
    wscript.echo ExcelFileName & " is not open."
End if

如何让它与多个打开的 Excel 窗口一起使用?


那么您想检测具有给定名称的工作簿是否打开?在 VBScript 中可以这样完成:

ExcelFileName = "some.xlsx"

On Error Resume Next
Set xl = GetObject(, "Excel.Application")  'attach to running Excel instance
If Err Then
  If Err.Number = 429 Then
    WScript.Echo "Workbook not open (Excel is not running)."
  Else
    WScript.Echo Err.Description & " (0x" & Hex(Err.Number) & ")"
  End If
  WScript.Quit 1
End If
On Error Goto 0

Set wb = Nothing
For Each obj In xl.Workbooks
  If obj.Name = ExcelFileName Then  'use obj.FullName for full path
    Set wb = obj
    Exit For
  End If
Next
If wb Is Nothing Then
  WScript.Echo "Workbook not open."
  WScript.Quit 1
End If

GetObject不过,只能附加到首先启动的 Excel 实例。您需要终止该实例才能附加到下一个实例(请参阅here http://support.microsoft.com/kb/288902)。但是,由于默认情况下在已运行的实例中打开工作簿,因此上述内容应该适用于大多数情况。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

打开多个 Excel 文件时检查特定 Excel 文件是否打开并激活它 的相关文章

  • 使用 VBScript 检查排序顺序

    假设我有一个数组 arr1 其中包含日期值 如下所示 Arr1 50 9 3 2012 4 57 02 AM 22 3 2012 5 57 02 AM 9 5 2012 8 57 02 AM 9 3 2011 4 57 02 上午 Edit
  • WScript.Shell.Exec - 从 stdout 读取输出

    我的 VBScript 不显示我执行的任何命令的结果 我知道命令被执行 但我想捕获结果 我已经测试了多种方法来执行此操作 例如以下方法 Const WshFinished 1 Const WshFailed 2 strCommand pin
  • 使用 javascript 获取选择标签的名称

    我在任何地方都没有找到这个问题 所以我将其发布在这里 我有一堆选择标签 部分使用 VBScript 命名 我希望能够获取从 javascript 中的 onchange 事件调用的选择标签的名称 这是代码
  • 使用 qtp 功能单击特定链接

    我想通过创建一个在操作中调用的函数来自动执行 Flipkart 的登录过程 Function Website this is the function Systemutil Run iexplore exe http www flipkar
  • CreateObject() vbs 的对象列表

    我喜欢脚本 我不喜欢重新发明轮子 所以我喜欢 CreateObject您能给我指出一个可在 VBScript 上使用的广泛且有用的对象列表并附上简短说明吗 确实 我还没有找到超过 50 个的网站 提前致谢 我自己并不知道有这样的列表 但我知
  • 使用 VBScript 重命名 IIS 中的虚拟目录?

    如何使用 VBScript 重命名 IIS 6 0 7 0 中的虚拟目录 或 Web 应用程序 如果您只想更改 IIS 7 中的站点名称 编辑applicationHost config文件 该文件可以在以下位置找到c Windows Sy
  • 我对一些小概念感到困惑

    我对 VBscript 非常陌生 正在努力学习所有概念 在我的实践过程中 我一直有一个疑问 dim a b c set a CreateObject scripting filesystemobject initiate the file
  • 如何从 HTA 中启动批处理文件

    我有一个基本的 HTA 其中我尝试通过按钮启动批处理文件 但是当我尝试启动批处理文件时 它不会运行 当我按下按钮时 将启动命令提示符窗口 但不会运行脚本 这是代码的简单示例
  • 如何设置任务在使用 vbs 登录时以当前用户身份运行而无需管理员权限?

    从命令行 我可以创建一个在登录时运行的计划任务 无需管理员权限或用户输入密码来设置任务 但是我必须使用 xml 文件来执行此操作 下面是一个示例 xml 其中 Domain User 部分必须在运行时替换为当前用户的域和名称
  • 尝试绑定到 AD 用户对象时出现错误 2147463168

    我正在 Windows 2012 不是 R2 并且无法升级 AD 环境上工作 当我使用管理员 非管理员 帐户从 vbscript 运行以下代码时 它运行完美 然而 当我以普通用户运行它时 我得到一个 2147463168 这似乎是一个绑定错
  • VBScript 从 Shell 获取结果

    Set wshShell WScript CreateObject WSCript shell wshshell run runas 如何获取结果并显示在 MsgBox 中 您将需要使用 WshShell 对象的 Exec 方法而不是 Ru
  • 使用 VBScript 经典 ASP 中的对象集合?

    我有一个名为 Company 的类 它具有 CompanyName CompanyCode 和 IsActive 等属性 该类是用 VBScript 编写的 我想在经典 ASP 中使用 VBScript 存储 Company 对象的集合 这
  • VB脚本删除特定子文件夹

    我需要 VBScript 命令提示符来删除具有特定名称的子文件夹 For Eg E 测试 43 5512686 5512698 html abc E 测试 43 5467686 5512699 html abc E 测试 43 558768
  • 如何在VBS中使用Excel内置常量[重复]

    这个问题在这里已经有答案了 我想使用VBScript而不是VBA来处理EXCEL 但是我在调 用Range Find方法时遇到了代码错误 见下文 Function find range wb domain var Dim sheet Dim
  • 比较数组中的文件、从文本文件中删除行、函数、日志记录

    所以我创建了这两个数组 Approved Shares 和 Current Shares Reads Approvedshare txt and makes the txt file into an array public objFSO
  • InnerHTML 什么时候立即执行?

    我希望打印这个 HTA 代码a一段时间后被替换为b 然而 它的作用是在一段时间内不打印任何内容 然后b 启用 MsgBox 行后 它会打印a第一的 看来执行的是statusinfo InnerHTML a 被推迟了 有谁能告诉我这是为什么吗
  • 如何从 .bat 运行 .vbs

    创建了一个广泛的批处理脚本程序来处理一些自动文件管理和打印 我需要调用一个 vbs 文件来执行它的 sendkeys 操作 有没有办法在不冻结程序的情况下完成此任务 我试过了START WAIT my vbs并且脚本在进入 vbs 时冻结
  • vbs以字典作为参数执行另一个vbs脚本

    我正在尝试从另一个 vbscript 执行一个 vbscript 我的想法是 我必须传递字典作为参数 但我总是收到相同的错误消息 到目前为止 这是我的代码 dim objShell Set objShell Wscript CreateOb
  • 打开多个 Excel 文件时检查特定 Excel 文件是否打开并激活它

    编辑 在将特定 Excel 文件或其窗口放在前面之前 我需要检查它是否正在运行 仍然打开 老问题 我想将特定的 Excel 窗口设置在前面 使用此 VBScript 代码 我可以通过名称激活一个 Excel 窗口 但由于打开了多个 Exce
  • vbscript,查找文件名中的匹配项

    我是 vbscripting 新手 刚刚收到一项任务 要求我找到文件名中具有匹配字符串的 6 个文件 以便我可以将这些文件移动到不同的目录 我使用正则表达式模式 d 8 d 6 来查找文件名中的所有字符串 我将如何在目录中进行搜索并检查文件

随机推荐