由于一些原因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然后注销,它不会......
答案 0 :(得分:0)
在似乎不起作用的部分中,在设置visible = TRUE后添加此行,然后查看您的计算是否按预期工作:
CreateObject("WScript.Shell").AppActivate objExcel.Name
不确定它是否可行,但我在某些代码中做了类似的事情,这就是那里的。 我必须在某处复制或阅读它(希望我能把它归功于哪里)。
仅供参考 - 我有一个打开Excel的vbscript,启动一个新工作簿,通过可查询对象以文本形式读取文件,然后进行一些自动编辑。适合我的代码是:
...
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
答案 1 :(得分:0)
尝试代码:
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")