【问题标题】:Excel workbook loses images after being refreshed through task scheduler job or SQL Server agent jobExcel 工作簿在通过任务计划程序作业或 SQL Server 代理作业刷新后丢失图像
【发布时间】: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


【解决方案1】:

问题是在以下位置缺少名为 INetCache 的文件夹: C:\Windows\SysWOW64\config\systemprofile\AppData\Local\Micro‌soft\Windows 一旦我创建了它并向运行作业的用户添加了权限(我没有测试是否真的需要设置权限),一旦作业运行,系统就会创建一个名为 Content.MSO 的新文件夹INetCache 和我的 Excel 报告保留了嵌入其中的所有原始图像和图标。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2010-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    相关资源
    最近更新 更多