1

我有一个问题 - 我安装了两个版本的 MS Office - 2007 和 2010。我有一个脚本需要在 2007 版本中打开 word 和 excel 文件。

我创建了一个程序,它应该尝试打开 2007 版本的 office,如果它失败(例如对于没有 2007 版本的用户),它会打开默认版本。

这里的问题是,无论 2007 是否存在,版本 2010 都是开放的。如果我删除“错误恢复”选项并将 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

这里有什么线索吗?

4

1 回答 1

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

知道为什么这两个...微软的工作方式不同吗?

于 2013-11-14T16:58:34.207 回答