excel - 将文件保存到新驱动器后使用 Shell 运行批处理文件
问题描述
我有一个使用宏通过 Shell 函数运行批处理文件 (CEA.bat) 的工作簿。我在本地 D: 驱动器上创建了工作簿(C: 是主/OS 分区),它在那里工作。
我想与我的同事共享工作簿的副本,但 shell 函数似乎只在创建它的驱动器中工作 (D:)。如果我在原始驱动器 (D:) 的另一个目录下创建工作簿的副本,它就可以工作。如果我在另一个驱动器(例如 C:)或另一台机器上创建一个副本,Shell 函数将不会运行批处理文件。
批处理文件和工作簿始终保存在同一个文件夹中。如果我直接运行批处理文件,它就可以工作,所以我认为它没有问题。该问题似乎与 Shell 函数有关。相关代码行如下所示:
Dim CEArun As String
ChDrive ThisWorkbook.Path
ChDir ThisWorkbook.Path
CEArun = Chr(34) & ThisWorkbook.Path & "\CEA.bat" & Chr(34)
Call Shell(CEArun, vbMinimizedNoFocus)
我遇到了一种使用 WshShell 对象在 VBA 中运行批处理文件的方法,但我还没有尝试过。似乎只有在激活“Windows Script Host Object Model”时它才会起作用。我的同事的 VBA 知识比我还少,所以我更愿意给他们一个他们可以使用的工具,而不必乱搞 VBA 设置。
解决方案
这对我有用,
将带有 ping 的 .txt 文件保存到我自己的机器上,并在我的工作簿中运行此代码。蝙蝠打开并进行了ping操作:
Option Explicit
Sub Test()
Dim MyPath As String: MyPath = ThisWorkbook.Path & "\CEA.bat"
Shell MyPath, vbMinimizedNoFocus
End Sub
推荐阅读
- c++ - C ++:使用重载显式运算符bool的类
- c++ - 在控制台应用程序中使用静态库时出现链接器错误
- java - 使用 Spring Boot 执行时应用程序启动方法中的 JavaFX 异常
- php - Laravel 7.0 MySQL SQLSTATE[HY000]:一般错误:1824 无法打开引用的表
- python - ValueError:解包的值太多(预期为 2)matplotlib
- python - 为列中的每个 numpy 元素运行相应的函数
- tensorflow-federated - tensorflow-federated 是否支持将训练数据放在客户端?
- php - Gmail API 为 MessageId 返回 404
- pentaho - Pentaho PDI - 不设置常数
- grafana - 我如何在 Windows 网络浏览器中看到 grafana