私が開発した Excel ワークブック アプリケーションのマニュアルを開く次のコードがあります。
Sub OpenManual()
'Word.Application.Documents.Open "\\filePath\FormFlow To MSExcel\FeedSampleReport-Manual.docx"
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
objWord.Documents.Open "\\filePath\FormFlow To MSExcel\FeedSampleReport-Manual.docx"
End Sub
ただし、これにより2つの問題が発生します。
- ドキュメントは開きますが、バックグラウンドで開きます。ユーザーは、タスクバーで Microsoft Word をチェックすることを知らない限り、ドキュメントが開かれたことを知りません。
- 受け取った Word 文書を閉じようとすると: このファイルは別のアプリケーションまたはユーザーによって使用されています。(C:\Users\Me\AppData...\Normal.dotm)
そのダイアログで [OK] をクリックすると、[名前を付けて保存] 画面が表示されます。
それをキャンセルして空白の Microsoft Word インスタンスを閉じようとすると、次のようになります。
グローバル テンプレートである Normal に影響する変更が行われました。これらの変更を保存しますか?
その後、[いいえ] をクリックすると、最終的にすべてが閉じます。
これら2つの問題について誰か助けてもらえますか?どうにかしてオブジェクトを解放する必要がありますか? これは今まで見たことがありません。
編集:
@Layman-Coders メソッドを試した後:
Sub OpenManual()
'Word.Application.Documents.Open "\\filePath\FormFlow To MSExcel\FeedSampleReport-Manual.docx"
'Open an existing Word Document from Excel
Dim objWord As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
' Should open as the forefront
objWord.Activate
'Change the directory path and file name to the location
'of the document you want to open from Excel
objWord.Documents.Open "\\filePath\FormFlow To MSExcel\FeedSampleReport-Manual.docx"
objWord.Quit
Set objWord = Nothing
End Sub
別の単語文書を開いてボタンをクリックすると、次のようになります。
- マニュアルが一番手前に開くが、すぐに受け取る
This file is in use by another application or user. (C:\Users\Me\AppData\...\Normal.dotm)
- [OK] を押すと、[名前を付けて保存] ダイアログが表示されます。
- [名前を付けて保存] ダイアログをキャンセルすると、マニュアル ドキュメントが表示されます。
- 赤い X をクリックしてドキュメントを
Changes have been made that affect the global template, Normal. Do you want to save those change?
閉じると、[いいえ] をクリックするとドキュメントが閉じます。
この文書が単語の最初のインスタンスである場合、私は開いています:
- ドキュメントが開きます。
- コードがその
objWord.Quit
行に到達するとすぐに、ドキュメントはすぐに閉じます。
ドキュメントを最前面に開いて、ユーザーが必要なときにマニュアルを表示して、自分の裁量でドキュメントを閉じられるようにしたいだけです。