如何在计算机锁定时运行 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 如果记录当前已锁定,则锁定CaseTrakker记录或延迟记录