【发布时间】:2016-06-10 07:16:45
【问题描述】:
我需要帮助创建一个将查找所有打开的 Excel 文档的 PowerShell 脚本,然后首先如果文档是只读的,则关闭文档而不保存并在进行更改时取消提示,或者第二个如果文档不是只读然后保存并关闭它们。此脚本将从计划任务中运行。
我之所以要这样做是因为我需要一种在我们共享的生产区域计算机上自动保存和关闭文档的方法。我们的制造车间区域有大约 80 台计算机,这些计算机的设置就像信息亭一样,供我们的生产工人访问工作所需的程序和文件。这些计算机被组策略锁定,只能访问特定的应用程序。其中一个应用程序中链接了 Excel 文档,供生产人员打开和编辑(他们从不创建文档)。但问题是这些文件经常被打开太久,而且很多时候它们也没有保存。所以我的解决方案是创建一个计划任务(在我们的生产班次之间运行)来保存和关闭所有打开的 Excel 文档。
我已经使用下面的这个 PowerShell 脚本来关闭其他应用程序,如果没有进行任何更改,它也适用于 Excel……但显然,如果有更改,您会收到保存提示,所以我需要一种保存方法在此运行之前首先查看 Excel 文档(或者如果只读抑制提示并关闭)。
Get-Process EXCEL | Foreach-Object { $_.CloseMainWindow() | Out-Null }
如果这不能用 PowerShell 完成,我愿意用 VBScript 代替。
【问题讨论】:
-
你可以用你自己的“主”工作簿做this with vba吗?
-
您是说使用 vba 脚本创建一个“主”工作簿以保存和关闭所有其他工作簿...然后在计划任务中使用 PowerShell 或 vbscript 启动该“主”工作簿,然后保存并关闭所有其他工作簿?
-
您可以通过其他方式启动主服务器,但 vba 也支持计时器。显然,主盒需要 24/7 全天候运行。
-
这必须是我可以使用 Windows 计划任务启动的东西。我将使用“主”工作簿尝试这种方法。但理想情况下,我希望得到回复,说这可以完全使用 PowerShell 完成。
-
可以的,把vbscript贴在下面。任何和所有支持 COM 的语言都可以连接到该文件。您需要 GetObject 到文件(您应该知道)。
标签: excel powershell vbscript