【问题标题】:VBScript asks me to overwrite Excel file despite DisplayAlerts = False尽管 DisplayAlerts = False,VBScript 仍要求我覆盖 Excel 文件
【发布时间】:2019-11-04 01:42:51
【问题描述】:

我想通过 VBScript 从 Excel 文件运行宏,以便我可以通过任务计划程序运行该脚本。

该部分有效,但是当它尝试保存文件时,它总是询问“文件已经存在,要覆盖吗?是,否,取消”。

在研究时,每个线程都说将 DisplayAlerts 设置为 False,我已经这样做了,但这不起作用。如果我只使用 .Save ,那么它会将其保存到我的默认文档目录 - 而不是共享点。

strPath = "\\ecs.zspi.company.de@SSL\DavWWWRoot\Folder\Test.xlsm" 

strMacro = "VV.VVImport2" '  

Set objApp = CreateObject("Excel.Application") 
objApp.Visible = True   
objApp.DisplayAlerts = False
objApp.AskToUpdateLinks = False
objApp.AlertBeforeOverwriting = False
objApp.FeatureInstall = msoFeatureInstallNone

Set wbToRun = objApp.Workbooks.Open(strPath) 
objApp.Run strMacro 
wbToRun.SaveAs "\\ecs.zspi.company.de@SSL\DavWWWRoot\Folder\Test.xlsm" 
wbToRun.Close False
objApp.Quit 

它应该将文件保存到原始位置而不发出警报。但我总是收到警告框“文件已存在,要覆盖吗?是,否,取消”。

【问题讨论】:

  • 为什么在保存到同一个文件时使用另存为?你不能使用简单的保存吗?
  • 如果我使用 .Save ,它会将文件保存到我的本地目录而不是共享点。
  • 他为什么要这么做?这根本没有意义。
  • 可能是我公司配置的。我们的 Documents 目录是一个网络驱动器。它集成为 T:\Documents。这样我们就可以在任何公司的电脑上登录并获得我们的数据。我猜有些系统路径是这样配置的。
  • 你可以尝试wbToRun.Application.DisplayAlerts = False,基于另一个线程中的评论。

标签: excel vbscript


【解决方案1】:

您需要将工作簿的.Saved 属性设置为True

...
wbToRun.SaveAs "\\ecs.zspi.company.de@SSL\DavWWWRoot\Folder\Test.xlsm" 
wbToRun.Saved = True
wbToRun.Close False
objApp.Quit 

似乎SaveAs 方法没有将属性设置为True,我之前遇到过这个问题,这已经为我解决了。

【讨论】:

  • 感谢您的回复。没有更多警报出现,但遗憾的是它现在说 Test.xlsm 是只读的。好像我根本不能使用 SaveAs。
  • 只读是什么意思?无论如何,您都在关闭工作簿,那为什么会成为问题?
  • 对不起。我直接从德语翻译过来的。我的意思是它是写保护的。就像它无法将其保存到该路径,因为该文件已经打开。我收到错误代码 800A03EC
  • 这不是最优雅的解决方案,但它现在可以工作了。我将它命名为不同的,删除旧文件并将新文件重命名为旧文件。谢谢。
  • 是的,通常我会这样做。但是将使用数据的人希望将其作为一个文件。不过谢谢你的建议。
猜你喜欢
  • 1970-01-01
  • 2018-03-06
  • 2013-02-17
  • 1970-01-01
  • 2015-05-03
  • 2013-08-20
  • 2011-03-23
  • 1970-01-01
  • 2019-09-02
相关资源
最近更新 更多