创建对象以便动态处理单词(VBA)

时间:2017-02-06 13:06:57

标签: vba ms-word

我正在使用VBA通过添加对库的引用来创建单词实例,但这会导致一个问题,因为存在一些没有单词的机器。

这会导致在这些计算机上启动时出现运行时错误。无法捕捉到这个错误。

但是,我尝试通过类似的东西在VBA中创建一个对象

Dim oWshShell As WshShell
Set oWshShell = New WshShell
' *** TEST  REGESTRY
Dim tmp As String
tmp = oWshShell.RegRead("HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Word\Options\PROGRAMDIR")
Debug.Print tmp

tmp = tmp + "winword.exe"

Dim oWord As Object
Set oWord = Shell(tmp)

但我的问题是oWord不是Word.Application的对象。那么如何处理呢?

很高兴能获得像Word.Application一样的所有功能。

1 个答案:

答案 0 :(得分:1)

您不必使用shell,直接使用COM工厂:

Function openWordApp() As Object
    On Error Resume Next
    Set openWordApp = CreateObject("Word.Application")
    If openWordApp Is Nothing Then
        msgBox "Word not installed on this machine"
    Else
        openWordApp.Visible = True
    End If
End Function

在调用者中,检查返回的值是否为