Word 2013のバグの1つに、閲覧モード(reading mode)に関するものがあります。
バグの様子
Word 2013でマクロ実行中に文書を開く場合に、閲覧モードで開いてしまうことがあります。
Word MVPのCindy Meisterさんの記事「Word 2013 Bug: “Not available for reading” error on opening a document 」によると、2つめの文書を開く場合にこの現象が起こるとのことです。
わたしが作ったいくつかのマクロでもこの現象が確認されました。
閲覧モードで開くこと自体は直接のエラーではないのですが、この閲覧モードの問題点として、文字入力や置換などの文書のコンテンツの操作(編集)ができないということがあります。
よって、マクロで何らかの操作をしようとすると、以下のようなエラーメッセージが表示されてしまいます。
Word 2010以前ではこのエラーはありません。
対策1(Workaround)
文書を開いた場合に、その文書のレイアウトを印刷レイアウト(Print Layout view)に変更します。
Word 2010以前では、文書を開いたときには通常は印刷レイアウトになっておりましたが、Word 2013では閲覧モードになってしまうのです。
例えば、以下のように1行入れるといいです。
Set myDoc = Documents.Open(FileName:=”ファイルパス”)
myDoc.ActiveWindow.View = wdPrintView
または、同じ意味ですが、以下のようにしてもいいと思います。
Set myDoc = Documents.Open(FileName:=”ファイルパス”)
myDoc.ActiveWindow.View.Type = wdPrintView
対策2(Workaround)
しかし、上記のように印刷レイアウトに変更しても同じエラーが出ることがあります。
例えば、Rangeオブジェクトに対して、InsertAfterメソッドを使えない場合がありました。
原因はわかっておりません。
具体的には、以下の記述でエラーになりました。
myDoc.Range.InsertAfter “書き込む文字列”
そこで、文字を入力する操作を、Textプロパティに文字列を入れる方法に変更したところ、エラーにならずに動きました。
With myDoc
.Range(.Range.End – 1, .Range.End – 1).Text = “書き込む文字列”
End With
関連記事
Word 2013 Bug: “Not available for reading” error on opening a document