Windows Excel中的VBA代码不';当通过调度程序触发时,无法运行

Windows Excel中的VBA代码不';当通过调度程序触发时,无法运行,windows,vba,excel,scheduled-tasks,Windows,Vba,Excel,Scheduled Tasks,因此,此WinServer 2012 R2 64位上的设置为: Windows任务调度器->cscript.vbs文件->打开excel并在主模块中运行子模块 当我双击.vbs文件时,它在后台运行良好,但当我通过任务计划程序触发.vbs时,excel会打开,但不会加载文件或运行子文件(不确定是哪个)。该任务在具有计算机管理权限的域用户下运行。我在尝试单击.vbs时使用了相同的用户 正在运行的代码,顺序为: 任务计划程序启动: C:\WINDOWS\system32\cscript.exe“D:\

因此,此WinServer 2012 R2 64位上的设置为:

Windows任务调度器->cscript.vbs文件->打开excel并在主模块中运行子模块

当我双击.vbs文件时,它在后台运行良好,但当我通过任务计划程序触发.vbs时,excel会打开,但不会加载文件或运行子文件(不确定是哪个)。该任务在具有计算机管理权限的域用户下运行。我在尝试单击.vbs时使用了相同的用户

正在运行的代码,顺序为:

任务计划程序启动:

C:\WINDOWS\system32\cscript.exe“D:\xyz\trigger.vbs”

.vbs有:

Excel代码:

如何找出.vbs或excel挂起的位置以及原因?另一台机器上的类似设置运行时不会出现问题。它实际上与此处引用的代码相同

我意识到有几种不好的做法(比如不清理xlapp设置),但我希望在清理之前让进程运行


/编辑: 移除

从.vbs中,不显示错误


/编辑2: 我试着尽可能回到过去

Option Explicit
Dim fso, f, s, log

Set fso = CreateObject("Scripting.FileSystemObject")

Set log = fso.CreateTextFile("D:\xyz\TESTlog.txt")
log.WriteLine "before fso"

Set f = fso.GetFile("D:\xyz\excel.xlsm")
s = f.Path & "  "
s = s & "Created: " & f.DateCreated & "  "
s = s & "Last Accessed: " & f.DateLastAccessed & "  "
s = s & "Last Modified: " & f.DateLastModified   

log.WriteLine "after fso"
log.writeline "fso content"
log.writeline s
当任务调度器通过cscript.exe触发时,此选项有效。 我将尝试修改以记录调用excel文件时发生的情况


/编辑3: 调试表明,这一点是正确的

Set xlBook = xlApp.Workbooks.Open("D:\xyz\excel.xlsm")
永远不会发生。我输入了错误号码,得到了这个电话的错误1004。仍然不确定是什么问题,但至少我现在得到了一个错误号码


/编辑4:


尝试将此作为计划任务运行时出现错误1004。当我双击.vbs运行它时,一切都正常。

关键是创建这两个文件夹:

C:\Windows\System32\config\systemprofile\Desktop

C:\Windows\SysWOW64\config\systemprofile\Desktop


当这些文件夹不存在时,Excel显然在非交互模式下运行时有问题(不确定原因)。创建它们消除了通过vbs打开工作簿时出现的1004错误。

是否有可能将D:分配给网络驱动器?您是否尝试记录有关文件的信息(例如文件大小)以查看是否可以查询有关文件的信息?您是否尝试过使用文件系统对象打开该文件,以查看在您的特定设置中是否可以访问该文件?请尝试一个仅显示MsgBox“Hello World”的简单示例。我不确定调度器是在哪个用户下工作的(可能是在比尔·盖茨·邓诺的叔叔手下),但我会检查,如果没有那个警告,你已经禁用了宏,你需要启用它。(不是为您自己,而是为调度器)D:是本地驱动器。.vbs和.xlms都在该驱动器上。就像我在帖子里提到的。双击.vbs可按预期工作。我仍将尝试查看是否可以访问该文件。给我几分钟看看发生了什么。。。完成。当我尝试使用fso时,通常双击.vbs可以访问该文件。当我通过任务调度器触发.vbs时(使用wscript或cscript进行wither),msgbox不会弹出。不确定这里的问题是什么:(@LubošSuk调度程序触发的任务在我用来在机器上工作的同一个用户下运行。它是在机器上具有管理员权限的域用户。
On Error Resume Next
Option Explicit
Dim fso, f, s, log

Set fso = CreateObject("Scripting.FileSystemObject")

Set log = fso.CreateTextFile("D:\xyz\TESTlog.txt")
log.WriteLine "before fso"

Set f = fso.GetFile("D:\xyz\excel.xlsm")
s = f.Path & "  "
s = s & "Created: " & f.DateCreated & "  "
s = s & "Last Accessed: " & f.DateLastAccessed & "  "
s = s & "Last Modified: " & f.DateLastModified   

log.WriteLine "after fso"
log.writeline "fso content"
log.writeline s
Set xlBook = xlApp.Workbooks.Open("D:\xyz\excel.xlsm")