VB.net(2005以降)で、以下のようなことをしたいと考えています。
1.Wordで作成したdocファイルをテンプレートにする。
2.上記ファイルを読み込み、別に用意したデータ(例えば送付先の宛名や本文など)をセット(テキスト置換等)する。
3.上記内容を印刷する。
(VB側で印刷制御できるとなおよい。)
4.上記内容をWord形式(doc)で保存する。
このようなことは可能でしょうか?
特に、2.〜4.についてはどのようにすればよいか、ご存知の方がいらっしゃいましたら教えて頂きたく、よろしくお願いいたします。
知的所有権の考慮をおわすれなく!
編集 削除知的所有権の考慮ということですが、どのことをおっしゃっているのでしょうか?
・読み込みをしたいWordで作成された文書の知的所有権?
・Wordソフトの知的所有権?
前者であれば、このプログラムの使用者がテンプレートのWordを作成するので問題はありませんが、もしかして後者のことを指しているのでしょうか?
明らかに後者ではないでしょうか。もしWordのフォーマットが公開されているなら、Open Officeの開発も手間取らないでしょうから、非公開なんでしょうね。
編集 削除> このようなことは可能でしょうか?
可能です。
Microsoft WordをCOMとして参照設定してやり,
Marshal.ReleaseComObjectを忘れずに,
適切なタイミングで呼び出すだけです。
# それが一番難しい……。
> Wordのフォーマットが公開されているなら
http://msdn.microsoft.com/en-us/library/cc313118.aspx
YuOさん、みなさん、ありがとうございます。
WordをCOM参照設定しようと思うのですが、開発環境ではWord2007なので、
Microsoft Word Object 12.0 Libraryの参照しか出来ません。
しかし、このプログラムを使う環境の中に、Word2003などのバージョンを利用しているPCもあるので、単に
obj = CreateObject("Word.Application")
としてもよいでしょうか?
>> 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 のバージョンによって、
引数の数が異なるメソッドなどもありますので注意してくださいね。