【发布时间】:2019-01-24 20:01:03
【问题描述】:
当我使用任务计划程序作业或 SQL Server 代理作业刷新 Excel 2010 工作簿时,工作簿中的所有图像都将替换为红色 x。这两个作业都调用在工作簿中运行宏的 VBS 脚本。当我手动运行该 VBS 脚本时(通过简单地执行脚本)没有问题。可能是什么原因,我该如何解决?我尝试为各种用户修改 Content.MSO 文件夹的权限,但没有任何帮助。
代码:
Set objExcel = CreateObject("Excel.Application.14")
Set objWorkbook = objExcel.Workbooks.Open("D:\Files In\test.xlsm")
objExcel.Application.Visible = False
objExcel.Application.Run "'test.xlsm'!MAIN_MACRO"
objExcel.ActiveWorkbook.Save
objExcel.ActiveWorkbook.Saved = True
objExcel.ActiveWorkbook.Close(0)
objExcel.Quit
Set objExcel = Nothing
WScript.Quit
【问题讨论】:
-
您可以将脚本添加到您的帖子中吗?您是否也尝试过通过调度程序或 SQLServer 运行作业,但工作簿处于打开状态?
-
我刚刚尝试在打开工作簿的情况下运行它,这没有任何区别,图像消失了,并用红色 x 代替。 VBS 非常简单: Set objExcel = CreateObject("Excel.Application.14") Set objWorkbook = objExcel.Workbooks.Open("D:\Files In\test.xlsm") objExcel.Application.Visible = False objExcel.Application .Run "'test.xlsm'!MAIN_MACRO" objExcel.ActiveWorkbook.Save objExcel.ActiveWorkbook.Saved = True objExcel.ActiveWorkbook.Close(0) objExcel.Quit Set objExcel = Nothing WScript.Quit
-
我最终设法找到了解决这个问题的方法。找到对类似问题here 的评论后,我发现以下文件夹中缺少 INetCache 文件夹:C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Microsoft\Windows。作业运行后,系统在新添加的 INetCache 文件夹下添加了一个名为 Content.MSO 的新文件夹,我相信该文件夹用于存储一些临时文件(即 Content.MSO)。我确保运行作业的帐户有权修改 INetCache 文件夹。
标签: sql-server excel vbscript task scheduler