Microsoft 製品に組み込まれている Visual Basic の実装。
良く分かりませんが・・・・
>On Error Resume Next
は、VBAに異常が起きた場合、停止させずにエラーを無視して先へ進めということです。
ですから、保存しますか?というメッセージを出さないようにする機能はありません。
それから、
>Set MyWD = GetObject(, "Word.Application")
はWordが既に走っていた場合、そのインスタンスを使用してしまいます。
kyonchanさんのコードでは、最後にApplicationのQuitが入っていますから、このコードを走らせた時点で
Wordが走っていた、つまり全く関係ない文書が開かれていたとすると、そのWordインスタンスを使用し、
最後のQuitでそのWordを終了してしまうという不具合が出ます。
ですから、一般論で言えば元のコードの方が真っ当だと思います。
因みに私の提示したコードを実行するとどうなりますか?
Excelブックと同じフォルダにaaaと言う名前のWord文書を入れて置いて実行してみてください。
なお、問題がなさそうなので、コメントしなかったのですが、GetObjectが登場したので、少々申し上げておきます。
問題はCreateObjectの位置です。
今のコードは毎回Wordインスタンスが生成されているかどうか確認しておられますが、通常は次の構成が
普通だと思います。
Set MyWD = CreateObject("Word.Application")
For
Set MyDoc = MyWD.documents.Open(mypath)
<文書に対する処理>
Next
MyWD.Quit
Set MyWD = Nothingところで、あまり根拠のない話なんですが、元のコードで
Set MyWD = Nothing
をはずしたらどうなりますか?
ほとんど忘却の彼方でWordかExcelかも覚えていないのですが、Nothingが入っているとトラぶったと言う
トラブルに遭遇したことがありました。