- ベストアンサー
Word VBAで2003はOKだが2007だとエラー
Wordの2003 で作成したVBAがあるのですが、Word2007の実行するとエラーになってしまいます。 記述-------------------------------------------------- Private Sub Document_Open() Dim macName As String macName = ActiveDocument.Name ~ 処理 ~ Windows(macName).Close saveChanges:=False End Sub ------------------------------------------------------ 上記の Windows(macName).Close saveChanges:=False の部分で、 「実行時エラー 5941 指定されたコレクションのメンバは存在しません。」 のエラーが出てしまします。 以前にも、Office2007 になってからエラーになる記述があって修正したりしたのですが、上記の場合の修正方法がわかりません。 (検索したのですがそれらしい修正方法を見つけられませんでした。) 対処方法がわかりましたら教えて下さい。 宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 まず、なぜ、Windows(macName)という記述をしているのか、良く分かりません。Word 2003 でも、そのような書き方はしないと思います。 Open イベントで開けたら、そのDocument が、ActiveDocument になるのは、普通です。 まさか、アドインを作っているわけでもないと思います。 2003でも、たまたま、エラーが出ないだけではないでしょうか。自然の流れではないように思います。最初と最後のActiveDocument が変わるなら、変数に入れればよいと思います。 ActiveDocument --> ThisDocument Windows(macName).Close saveChanges:=False ↓ ThisDocument.Close SaveChanges:=False ただ、Open イベントで開けて、そのまま保存せずに閉めるというのは、奇妙な内容です。
その他の回答 (1)
- DreamyCat
- ベストアンサー率56% (295/524)
2007でも問題なく実行されます。 ということは文書名の文字列に問題があるか、 「処理」の中で書き換えをしたことによって 存在しない名前になったのではないかと思います。 2003と2007でmacnameの値(文字列)がどうなっているのかを しっかりと比べてみればわかるのではないでしょうか? スペースの有無などが自動で変更されているのかもしれません。
お礼
早速の回答ありがとうございます。 文書名が変わっていないかは確かに怪しいと思いデバッグしてみていたのですが、問題ありませんでした。
お礼
早速の回答ありがとうございます。 説明不足になってしまいましたが、元の文書を変更されたくないので ~ 処理 ~ のところで新規文書を追加し、最後に元文書を閉じる処理しをしています。 その為、最初と最後でActiveDocumentは変わってしまいます。 ご意見を参考に下記のようにしたら上手くいきました。 ありがとうございます。 新記述---------------------------------------------------- Dim docName As Document Set docName = ActiveDocument ~ 処理 ~ docName.Close saveChanges:=wdDoNotSaveChanges ----------------------------------------------------------