VB/VBAのエキスパートが私を助けてくれることを願っています。 ユーザーがWord 2003で文書を開き、Normal.dot AutoOpen
マクロ内で現在の文書を確認し、Webページ上のリンクをクリックして文書を開いた場合は、他の特定のアプリケーション固有の文書基準は、(我々は、ユーザーがアクセス権を持っていると仮定することができ、共有ドライブ上にある)ソースドキュメントをストリーミング「コピー」を閉じて、開きます。VBAマクロでWord文書を開く/アクティブ化する
Documents.Open origDoc
Documents(ActiveDocument.FullName).Close SaveChanges:=wdDoNotSaveChanges
Documents(origDoc).Activate
With ActiveDocument
''# Do work
End With
私の考えは、私は、元のことを確実にするためにActivate
を呼び出すために必要なことでした文書はActiveDocument
でしたが、.Activate
呼び出しで4160の「不正なファイル名」エラーが発生しています。 .Activate
への呼び出しをコメントアウトすると、すでに開かれている他のドキュメントがあっても、ActiveDocument
がorigDocドキュメントに設定されているように見えます(ドキュメントコレクションの管理方法はよくわからず、Wordで次に決定するものはActiveDocument
です)。現在のActiveDocumentをプログラム的に閉じる場合)
したがって、ドキュメントの.Open
を呼び出すと、ドキュメントが明示的にActiveDocument
に設定されていますか?また、すでにアクティブな文書に.Activate
を呼び出すとエラーが発生しますか?
私はこれについて多くの文書を見つけることができませんでしたので、事前の感想と洞察力に感謝します!
Document(origDoc).Activate
ドキュメントのである必要があります:
おそらく、コードのActiveDocumentとしてドキュメントのストリーミングコピーを処理していると思われます。そのドキュメントオブジェクトをコードの先頭にある変数に割り当て、残りのコードで変数を使用するほうがずっと良いでしょう。他の人が指摘しているように、2行目のコードで間違ったバージョンのドキュメントを閉じる可能性があります。また、元のドキュメントオブジェクトを開くときに変数に割り当てることも賢明です。 – robartsd