我遇到了问题 - 我安装了两个版本的MS Office - 2007年和2010年。我有一个脚本需要在2007版本中打开word和excel文件。
我创建了一个应该尝试打开2007版Office的过程,如果失败(例如对于没有2007版本的用户),它会打开默认版本。
问题在于,无论2007年是否存在,2010版本都在开放。 如果我删除“on error resume”选项并将Word.Application.12更改为例如Word.Application.13我们得到一个错误,没有这样的应用程序可以打开,这是正确的 - 这意味着系统确实将.12识别为“有意义的东西” - 但是它没有启动它。
Sub StartWord
On error resume next
Set appWord = CreateObject("Word.Application.12")
appWord.visible = false
appWord.DisplayAlerts = false
If err.number <> 0 Then
Set appWord = CreateObject("Word.Application")
appWord.visible = false
appWord.DisplayAlerts = false
End if
On error goto 0
End Sub
这里有任何线索吗?
答案 0 :(得分:1)
好吧,看来我会回答我自己的问题。
在Word的情况下,我测试了以下行为和代码:
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run ("""C:\Program Files (x86)\MicrosoftOffice\Office12\WINWORD.EXE""/regserver"), 0
Set objShell = Nothing
wscript.sleep 1000
StartWord
Sub StartWord
Set appWord = GetObject(, "Word.Application")
appWord.visible = FALSE
appWord.DisplayAlerts = false
End Sub
此处的结果是使用了正确的Word版本。但是,相同的代码不适用于EXCEL。
Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run ("""C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.EXE""/regserver"), 0
Set objShell = Nothing
wscript.sleep 1000
StartExcel
Sub StartExcel
Set appExcel = GetObject("", "Excel.Application")
appExcel.visible = true
appExcel.DisplayAlerts = false
End Sub
任何想法为什么这两部分...微软的工作方式不同?