Excel工作簿在通过任务计划程序作业或SQL Server代理程序作业刷新后丢失图像
问题描述:
当我使用任务计划程序作业或SQL Server代理程序作业刷新Excel 2010工作簿时,工作簿中的所有图像均替换为红色x。这两个作业都调用在工作簿中运行宏的VBS脚本。当我手动运行该VBS脚本时(通过简单地执行该脚本)就没有问题了。可能是什么原因,我该如何解决?我试图修改Content.MSO文件夹中各种用户的权限,没有任何帮助。Excel工作簿在通过任务计划程序作业或SQL Server代理程序作业刷新后丢失图像
代码:
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
答
我发下我自己的问题评论这也是一个回答我的问题。我想将这个问题标记为已回答(尽管看起来有点怀疑我已经回答了我自己的问题并将其标记为正确,但看不到任何其他方式来关闭它)。
的问题是在以下位置称为INetCache缺少的文件夹: C:\ WINDOWS \ Syswow64资料\ CONFIG \ systemprofile \应用程序数据\本地\微软\的Windows 当我创造了它,并添加权限它发送给运行作业的用户(我没有测试是否需要设置权限),一旦作业运行,系统会在INetCache下创建一个名为Content.MSO的新文件夹,并且我的Excel报告保留了其所有原始图像以及嵌入其中的图标。
您能否将脚本添加到您的文章中?您是否还尝试过通过调度程序或SQLServer运行作业,但打开工作簿? – RealCheeseLord
我刚刚尝试在打开工作簿的情况下运行它,它没有任何区别,图像消失并用红色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 =真 objExcel.ActiveWorkbook.Close(0) objExcel.Quit 设置objExcel =无 WScript.Quit – Rafal
我终于找到了解决这个问题的办法。找到类似问题的注释[here](https://stackoverflow.com/a/41161719/8543148)我发现在以下文件夹中缺少INetCache文件夹:* C:\ Windows \ SysWOW64 \ config \ systemprofile \应用程序数据\本地\微软\的Windows *。一旦作业运行,系统就会在新添加的INetCache文件夹下添加一个名为Content.MSO文件夹的新文件夹,我相信这个文件夹用于存储一些临时文件(即Content.MSO)。我确保运行作业的帐户有权修改INetCache文件夹。 – Rafal