如何在计算机锁定时运行 VBScript GetObject?

Posted

技术标签:

【中文标题】如何在计算机锁定时运行 VBScript GetObject?【英文标题】:How to run VBScript GetObject while the computer is locked? 【发布时间】:2014-08-08 18:40:18 【问题描述】:

由于here 讨论的几个原因,我无法打开这样的 Excel 工作表:

Set excel = CreateObject("Excel.Application")
Set workbook = excel.Workbooks.Open(file_path.xls)
excel.Visible = True

所以我尝试这样打开它:

CreateObject("WScript.Shell").Run "excel.exe"
WScript.Sleep 5000

CreateObject("WScript.Shell").Run "excel.exe"
WScript.Sleep 5000

Set excel = GetObject(,"Excel.Application")
Set workbook = excel.Workbooks.Open( excel_file_path, 3) 
excel.Visible = True

当我的计算机未锁定时,它运行得很好。而且通常 VBScripts 可以在计算机被锁定的情况下运行。但是,仅当计算机被锁定时,在GetObject(,"Excel.Application") 行我收到以下运行时错误:

Error:  ActiveX component can't create object: 'GetObject'
Code:   800A01AD
Source: Microsoft VBScript runtime error

我尝试将我的 Windows 7 设置更改为在某些不活动后从不锁定,但我公司的 IT 部门已强制执行该设置。

有没有办法从锁定屏幕运行这个脚本,或者你有没有推荐的替代方法?

编辑:

这与打开 excel 文件的方式有关...如果我打开一个新的空白 excel 页面而不是锁定屏幕,GetObject 将可以很好地获取该文档,但如果我使用它打开它shell然后注销,它不会...

【问题讨论】:

【参考方案1】:

在似乎不起作用的部分,在设置 visible = TRUE 后添加此行,然后查看您的计算是否按预期工作:

CreateObject("WScript.Shell").AppActivate objExcel.Name

不确定它是否会起作用,但我在一些代码中做了类似的事情,这就是那里。 我一定是在某处复制或阅读过它(希望我能注明出处)。

仅供参考 - 我有一个 vbscript 可以打开 Excel,启动一个新工作簿,通过​​查询表对象以文本形式读取文件,然后进行一些自动编辑。适合我的代码是:

...
set objExcel = CreateObject("Excel.application") 

' Commented out the following line, so the user can see something is happening.
' objExcel.application.screenupdating   = false  ' Don't update the screen while    shucking and jiving is going on.

objExcel.visible = true
objExcel.application.cursor = 2 ' change cursor to the hourglass.

CreateObject("WScript.Shell").AppActivate objExcel.Name

' Create a new workbook and worksheet
objExcel.workbooks.add
objExcel.worksheets.add

etc

【讨论】:

感谢您尝试解决我的问题的根源,这是一个令人困惑的问题。我试了一下,但不幸的是同样的事情,计算实际上并没有运行,它们只是闪烁,没有任何反应。 嗯,这就是我前几天刚完成这个程序时的想法。祝你好运! 这篇文章的信息有帮助吗? ***.com/questions/154434/…【参考方案2】:

试试代码:

CreateObject("WScript.Shell").Run "excel.exe """ & excel_file_path & """"
WScript.Sleep 5000

CreateObject("WScript.Shell").Run "excel.exe"
WScript.Sleep 5000

Set excel = GetObject(,"Excel.Application")

【讨论】:

以上是关于如何在计算机锁定时运行 VBScript GetObject?的主要内容,如果未能解决你的问题,请参考以下文章

计算机被锁定时如何发送电子邮件?

VBScript - 捕捉结束任务信号

vbscript 如果记录当前已锁定,则锁定CaseTrakker记录或延迟记录

如何在 VBScript 中指定“以最高权限运行”?

如何在后台找到运行 VBScript 的文件位置? [关闭]

在连接本地WMI提供程序时出现错误 70。没有权限(Microsoft VBScript运行时错误