VBscript - 安装两个版本时打开特定版本的office

时间:2013-11-08 16:22:07

标签: vbscript ms-office

我遇到了问题 - 我安装了两个版本的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

这里有任何线索吗?

1 个答案:

答案 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

任何想法为什么这两部分...微软的工作方式不同?