首页 > 解决方案 > 为什么在给定正确的文件路径时我的脚本无法找到我的 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 文件时,我会弹出一个窗口,说它们正在使用中并被我锁定以供编辑。我不记得这个弹出窗口是否在问题开始之前出现。网络上的其他用户在脚本开始失败之前很久就定期访问这些文件,所以我不明白这可能是什么问题。错误代码/消息似乎也与问题不相符。

我将不胜感激任何帮助或洞察这个问题。谢谢!

标签: excelvbscript

解决方案


推荐阅读