基本的に、複数のOfficeバージョンの自動化クライアントの作成で提案されているように実行したいようですが、遅延バインディングの使用に関するアドバイスは無視しています。
関連するタイプライブラリはMSWORD8.OLBですが、Word97またはWordを含むOffice97Editionなしでそれを取得する正当な方法があるかどうかは思い出せません。オフハンドこのタイレピブを登録すると、Word 2007のインストールにどのような影響があるかわかりません。これは、多くのClassID値を共有している可能性があるためです。
VC ++の記事PRB:複数のバージョンのOfficeがインストールされている場合、#importを使用したOfficeの自動化は失敗する可能性があるMicrosoftは、適切なOLBを参照する限り、これが実行可能な戦略になる可能性があることを示唆しているようです。VB6はtypelibの検索にVC++#importセマンティクスを使用しないため、これはおそらくC++よりもVB6の方が問題が少ないでしょう。説明は、実行時バインディングをもう一度示唆することで結論付けられるため、ここでも、実行時の動作を参照している可能性があります。
記事WD:Word for Windowsタイプライブラリの入手方法には、Word6およびWord7のtypelibへのリンクがあります(リンクは適切ではない可能性があります)が、Word97にはリンクがありません。Word97をインストールして入手することをお勧めします。
いずれにせよ、Word 97の定数や列挙型などを使用し、すべてのオブジェクトに実行時バインディングを使用するのが安全だと思われます。この「半斤」は何もないよりはましです。「Intellisense」の支援を受けるためにアーリーバウンド宣言を使用して初期開発を行うこともできます。その後、戻ってすべてのアーリーバウンドオブジェクト宣言をレイトバウンドに変更し、対応するレイトバウンド呼び出しにAs Object
置き換えて、実際の強いものを残します。末尾のコメントとして入力します。条件付きコンパイルブロックを使用して、後で初期バインディングに簡単に戻すこともできます。Set X = New TYPE
CreateObject()
#If/#Else
今日、MSWORD8.OLBを合法的に取得することは不可能かもしれないので、OFF:「VisualBasic for Applicationsの組み込み定数」(WC0993)を検討することもできます。これは、Wordの多くの古いバージョンの定数を定義するVB.BASモジュールを含むダウンロードを提供します。他のOfficeアプリケーション。ダウンロードリンクは機能します-少なくとも現時点では!
名前付き定数がtypelibsの主な理由であるため(遅延バインディングのみが本当に安全であることを考えると)、これは悪い妥協ではないかもしれません。必要な.BASファイルを取得してクリーンアップし(そこにいくつかの疣贅があるはずです)、少しの努力でそれらの定数と列挙型だけを含むカスタムの「ジェネリックワード」TLBに変換することもできます。そのことについては、誰かがすでにこの仕事をしているかもしれません。ただし、独自の「VB .BAS to ODL / IDL」コンパイラを作成する前に、いくつかの検索を試してみることをお勧めします。