- - PR -
Officeオートメーション:Word.Documents.Open()でエラー
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-01-20 18:53
こんにちは。初めて投稿させていただきます。
VB.net初めて間もないので用語など不適切かもしれませんが、 おゆるしください。 現在、以下の環境でOfficeオートメーションを使い WindowsアプリからWORDを制御するものを作っています。 VisualBasic.net Standard Windows2000 Word2002 ある程度動くようになったので、 コンパイルした実行ファイルその他を WindowsNT,Word2000の環境で実行したところ WORDの文書を開く部分で 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」 というエラーが起こってしまいます。 'ソース-------------------------------- Dim objWord As New Word.Application() Dim strFileName as String = "c:\\test.doc" Debug.Write(objWord.Version) ←ここは動くのに objWord.Documents.Open(strFileName) ←このメソッドはエラー発生 '------------------------------------- 参照設定でWORDのプロパティをみると、 "説明:Microsoft Word 10.0 Object Library" となっているので、実行先のWord2000(=Word9.0)では動かないのかと思いきや、 Open()以外の基本的なメソッド(Documents.Add()など)でエラーは起こりません。 なぜOpen()だけエラーになるのか・・・ どなたかアドバイスお願い致します。 |
|
投稿日時: 2004-01-21 13:45
バージョンが違うのが問題でしょう。やっぱり。
バージョンが違うために、Wordのオブジェクトを 生成できない、という状況だと思います。 Open以外の部分が動作する、というのは参照設定の ほうを変更して試してみたんですよね? Documents.Add()とかはWord側が持っているメソッド ですから、Word2000とWord2002で同じメソッドを 持っていれば動作して当然です。 このあたり、どのバージョンでも動くようにするには レイトバインディングを利用するような形にプログラムを 変更する必要があると思います。 #サポート情報あたりに参考情報がのっていた気がする。 |
|
投稿日時: 2004-01-21 16:28
小野様:
お教えいただいたようにレイトバインディングを調べて 以下ソースのように変更したところ、Word2002でも2000でも 正常に動くようになりました。 ありがとうございました。m(_ _)m 'ソース-------------------------------- Dim objWord = CreateObject("Word.Application") Dim strFileName as String = "c:\\test.doc" Debug.Write(objWord.Version) objWord.Documents.Open(strFileName) '-------------------------------------- ところで >Open以外の部分が動作する、というのは参照設定の >ほうを変更して試してみたんですよね? いえ。Word2002の参照設定のままです。 この設定のままコンパイルして、Word2000環境で実行した結果 Openだけが動かなかったのです。 でもやはりどう考えてもVerの問題だと思うので、 逆にWord2000の参照設定(事前バインディング)を作成し Word2002環境で実行してみようかと思います。 >サポート情報あたりに参考情報がのっていた気がする。 ここにありました。 http://support.microsoft.com/default.aspx?scid=kb;JA;304661 |
1