DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Word操作

  • 題名: Word操作
  • 著者: kiyo
  • 日時: 2005/11/27 14:48:57
  • ID: 13905
  • この記事の返信元:
    • (なし)
  • この記事への返信:
  • ツリーを表示
環境/言語:[OS : Windows 2000 Professional / 言語 : Visual Basic .NET / .NET Framework : 1.1]
分類:[.NET]

【解決したい問題】

Windowsフォーム上のステータスバーダブルクリックのイベントでWord(OfficeXP)で作成されたHELPファイルを開くということを実現したいのですが、以下のように記述した結果、Wordファイルを「×」マークで閉じても、タスクマネージャのプロセスにWINWORD.EXEが残っています。


' Microsoft Word xx.x Object Libraryを参照設定
Private Sub StatusBar1_DobleClick(.....
Dim objWord As New Word.Application
Dim objDoc As Word.Application.Documents
Dim strHelpFilePass As String

strHelpFilePass = "D:\Help.doc"

objDoc = objWord.Documents
objDoc.Open(strHelpFilePass)

objWord.Visible = True

end Sub

【解決するために何をしたか】

問題を解決するために情報を探した結果、
「COM オブジェクトを解放する」
というキーワードにあたりました。

System.Runtime.InteropServices.Marshal.ReleaseComObject(objDoc)
System.Runtime.InteropServices.Marshal.ReleaseComObject(objWord)

をどこかで行わないといけないのではということがわかりました。

ただ、実現したい機能としては、
WindowsフォームからHelpファイル(Word)を開くだけで、
後は、Wordで終了とかをすべて任せてしまいたい。
ということで、Comの開放をどこでやればいいのか?
わからなくなっています。

【追加事項】

ご存知のかたアドバイスよろしくお願いします。
プロセスで "start ***.doc"を実行する。
■No13905に返信(kiyoさんの記事)
> 問題を解決するために情報を探した結果、
> 「COM オブジェクトを解放する」
> というキーワードにあたりました。

これはちょっと誤解を招くかもしれませんね。
http://jeanne.wankuma.com/tips/programing/02-releasecom.html

> ただ、実現したい機能としては、
> WindowsフォームからHelpファイル(Word)を開くだけで、
> 後は、Wordで終了とかをすべて任せてしまいたい。
> ということで、Comの開放をどこでやればいいのか?

中さんが仰るように、Process.Start の方が安全でしょうね。
COM でやるにしても Close と Quit はしないで解放すれば良いでしょう。
あくまで参照カウントですから。
  • 題名: Re[2]: Word操作
  • 著者: kiyo
  • 日時: 2005/11/28 20:52:17
  • ID: 13927
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
ご回答ありがとうございます。

今回の要件を満たしているので
System.Diagnostics.Process.Start("D:\aaa.doc")
でやることにしました。

また、
じゃんぬねっとさんのHPも大変参考になりました。

本当にありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板