excel - 为什么在给定正确的文件路径时我的脚本无法找到我的 Excel 文件?
问题描述
我有一个 .vbs 脚本,它打开两个 excel 文件并将工作表的内容从第一个文件复制到第二个文件中。它应该通过任务调度程序每天运行。
该脚本正常运行,直到最近修改并稍微重命名了相关的 excel 文件 - 我浏览了脚本并在进行更改后相应地编辑了文件名,三重检查名称和文件路径是否匹配。
更改后的几周内一切都运行良好,但现在脚本在启动后立即失败,给我一个错误,声称即使文件位于给定路径上也无法找到该文件。错误代码是 800A03EC。
这是脚本中的第一段代码,包括似乎抛出错误的第 7 行:
Dim objApp ' as excel object
Dim x, y ' as workbook
Set objApp = CreateObject("Excel.Application")
objApp.DisplayAlerts = False
objApp.Visible = False
Set x = objApp.Workbooks.Open("S:\Work (Public)\PORT MGMT & TRADING\PORT MGMT FORMS\ORION_FPFOCUS.xlsm")
Set y = objApp.Workbooks.Open("S:\Work (Public)\PORT MGMT & TRADING\PORT MGMT FORMS\FPFocusPasteSpecialValues.xlsb")
Dim WSx, WSy ' as excel worksheet
Set WSx = x.Worksheets("FPSUP")
Set WSy = y.Worksheets("FPFOCUS-COPY")
WSy.Range("B1").value = FormatDateTime(Now)
objApp.Application.Run "ORION_FPFOCUS.xlsm!Auto_Open"
有问题的 excel 文件都位于同一目录中:
S:\Work (Public)\PORT MGMT & TRADING\PORT MGMT FORMS\ORION_FPFOCUS.xlsm
S:\Work (Public)\PORT MGMT & TRADING\PORT MGMT FORMS\FPFocusPasteSpecialValues.xlsb
脚本位于此处:
C:\Users\bserv\Documents\CopyFPFocus.vbs
S 驱动器不是物理驱动器,它是由名为 Workplace 的服务托管的虚拟驱动器。我可以浏览它并手动打开excel文件就好了。
我最初认为这是任务计划程序的用户权限问题,但我选择了“以最高权限运行”选项,脚本仍然失败。我还检查了 Excel 中的隐私/信任设置,以确保脚本没有被拒绝访问,但我没有看到任何会禁用脚本工作的设置,而且我也知道所有这些设置都没有自从脚本工作以来发生了变化,所以我看不出它们是如何成为潜在原因的。
当我尝试在命令行中通过 cscript 手动运行代码时,它返回此错误:
C:\Users\bserv\Documents\CopyFPFocus.vbs(25, 4) (null): The remote procedure call failed.
这是脚本的第 25 行供参考:
objApp.Run "RefreshAllStaticData"
当我以管理员身份运行命令提示符再次尝试时,我得到了与最初相同的错误。对不起,文件是否可能被移动重命名或删除。
真正让我困惑的部分是脚本在更改后的一段时间内运行良好 - 所以我真的不确定实际更改导致此问题随机弹出的原因。
我注意到的另一件事是,在打开 excel 文件时,我会弹出一个窗口,说它们正在使用中并被我锁定以供编辑。我不记得这个弹出窗口是否在问题开始之前出现。网络上的其他用户在脚本开始失败之前很久就定期访问这些文件,所以我不明白这可能是什么问题。错误代码/消息似乎也与问题不相符。
我将不胜感激任何帮助或洞察这个问题。谢谢!
解决方案
推荐阅读
- javascript - 使用 vanilla Javascript 查找 ID 包含字符串的所有 DOM 元素
- python - 将 YouTube-DL 错误返回为 Python 错误
- node.js - 为什么 NodeJS express 的 POST 处理程序没有被调用但 RAM 上升了?
- react-native - 正如错误所说,平面列表并不平滑
- node.js - 从节点 shebang 调用时保持查询器进程处于活动状态
- javascript - 自定义小部件未在 mozilla-services-react-jsonschema-form 中显示
- javascript - Last.Fm API - 尝试在 Node.js 应用程序中使用 track.scrobble 服务时参数无效
- aws-glue - 在 AWS Glue 作业中添加时间戳列
- android - 如何从 Flurry 的隐私仪表板获取同意字符串?
- django - 另一个 Django “应用程序尚未加载”