2017-02-06 1 views
1

現在、ライブラリの参照を追加することによって、単語のインスタンスを作成するためにVBAを使用していますが、単語がないコンピュータが存在するため、Word on the fly(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) 

のようなもので、その場でVBAでオブジェクトを作成しようとする。しかし、私の問題は、oWordはWord.Applicationのオブジェクトではないということです。それでは、これをどう扱うか?

Word.Applicationのようなすべての機能を利用できるようになるとよいでしょう。返された値は何もされていないかどうかを確認し、呼び出し側では

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 

+0

http://stackoverflow.com/questions/9491314/preventing-excel-vba-compile-errors-due-to-users-having-an-older-version-of-ms-o –

+0

またはhttp: /stackoverflow.com/a/41855913/4628637 – R3uK

答えて

1

あなたは、シェルを使用して直接COMファクトリを使用する必要はありません。

+0

ええ、それは素晴らしいです。ありがとう。 – Kinimod

関連する問題