VB.netでWordファイルを作成するには?

解決


ニョッキニョキ  2009-02-09 14:50:59  No: 145753  IP: 192.*.*.*

VB.net(2005以降)で、以下のようなことをしたいと考えています。
1.Wordで作成したdocファイルをテンプレートにする。
2.上記ファイルを読み込み、別に用意したデータ(例えば送付先の宛名や本文など)をセット(テキスト置換等)する。
3.上記内容を印刷する。
  (VB側で印刷制御できるとなおよい。)
4.上記内容をWord形式(doc)で保存する。
このようなことは可能でしょうか?
特に、2.〜4.についてはどのようにすればよいか、ご存知の方がいらっしゃいましたら教えて頂きたく、よろしくお願いいたします。

編集 削除
ともあれ  2009-02-09 21:34:56  No: 145754  IP: 192.*.*.*

知的所有権の考慮をおわすれなく!

編集 削除
ニョッキニョキ  2009-02-10 09:09:42  No: 145755  IP: 192.*.*.*

知的所有権の考慮ということですが、どのことをおっしゃっているのでしょうか?
・読み込みをしたいWordで作成された文書の知的所有権?
・Wordソフトの知的所有権?
前者であれば、このプログラムの使用者がテンプレートのWordを作成するので問題はありませんが、もしかして後者のことを指しているのでしょうか?

編集 削除
スガリ  2009-02-10 09:42:19  No: 145756  IP: 192.*.*.*

明らかに後者ではないでしょうか。もしWordのフォーマットが公開されているなら、Open Officeの開発も手間取らないでしょうから、非公開なんでしょうね。

編集 削除
YuO  2009-02-10 10:22:10  No: 145757  IP: 192.*.*.*

> このようなことは可能でしょうか?
可能です。
Microsoft WordをCOMとして参照設定してやり,
Marshal.ReleaseComObjectを忘れずに,
適切なタイミングで呼び出すだけです。
# それが一番難しい……。

> Wordのフォーマットが公開されているなら
http://msdn.microsoft.com/en-us/library/cc313118.aspx

編集 削除
ニョッキニョキ  2009-02-10 11:51:12  No: 145758  IP: 192.*.*.*

YuOさん、みなさん、ありがとうございます。
WordをCOM参照設定しようと思うのですが、開発環境ではWord2007なので、
Microsoft Word Object 12.0 Libraryの参照しか出来ません。
しかし、このプログラムを使う環境の中に、Word2003などのバージョンを利用しているPCもあるので、単に

obj = CreateObject("Word.Application")

としてもよいでしょうか?

編集 削除
魔界の仮面弁士  2009-02-10 13:01:03  No: 145759  IP: 192.*.*.*

>> Wordのフォーマットが公開されているなら
併せてこちらも。

doc フォーマット
http://www.microsoft.com/interop/docs/officebinaryformats.mspx

docx フォーマット
http://msdn.microsoft.com/ja-jp/library/aa338205.aspx
http://www.ecma-international.org/publications/standards/Ecma-376.htm


> obj = CreateObject("Word.Application")
> としてもよいでしょうか?
本来は、Office 2003 の 「PIA」を使いたいところです。
http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=3C9A983A-AC14-4125-8BA0-D36D67E0F4AD&displaylang=en
http://msdn.microsoft.com/ja-jp/library/cc375794.aspx
http://msdn.microsoft.com/ja-jp/library/aa159923.aspx

レイトバインドでも良いですが、Word のバージョンによって、
引数の数が異なるメソッドなどもありますので注意してくださいね。

編集 削除