現在、ライブラリの参照を追加することによって、単語のインスタンスを作成するために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
:
http://stackoverflow.com/questions/9491314/preventing-excel-vba-compile-errors-due-to-users-having-an-older-version-of-ms-o –
またはhttp: /stackoverflow.com/a/41855913/4628637 – R3uK