ワード文書(*.doc)が開いているかチェックについて
ワード文書(*.doc)が開いているかチェック
ワード文書(*.doc)が開いているかのチェック方法についてです。
ワード文書(*.doc)などを扱う場合、プログラム終了時に他の文書が開いているか確認し、開いている文書が
無ければ、ワード自体を終了させる必要があります。これをしないと、ワード文書を閉じた後も、
ワード(winword.exe)というアプリケーションだけが起動したままになってしまいます。
このあたり、Excelなどでも一緒です。(ExcelとWord位しかやったことが無いのでわかりませんが。。。)
以下のサンプルコードは、同じインスタンス内でのみ開いている文書が無いか確認しています。
ただし、同じインスタンス内でのみ確認すれば問題ないと思います。
・Excelを起動して、同じ画面から他の文書を開いた場合、同じインスタンス内で複数の文書が開いている
ことになります。
・Excelを起動している状態で、スタートメニューやプログラムから新たにワードを立ち上げ文書を開いた場合、
別インスタンスで立ち上がります。
(タスクマネージャで確認すると、winword.exeが複数起動していることが確認できます。)
'==============================================================================
'
'ワード文書が開いているかチェック関連
''
'==============================================================================
'---------------------------------------------------
' 利用方法(以下必要に応じてプロシージャに貼り付けて下さい。)
'---------------------------------------------------
'------------------------------------------------------------
' 事前に参照設定を行なってください。
' 【参照設定方法】
' [プロジェクト]-[参照設定]-[MicroSoft Word 11.0 Object Library]にチェックを入れる。
' (11.0はバージョンにより異なります。ex)11.0 ⇒ Word2003, 9.0 ⇒ Word2000))
'------------------------------------------------------------
''==============================================================================
'
' ワード文書が開いているかチェック
'
'==============================================================================
Dim wWD As Word.Application
Dim wDoc As Word.Document
Dim wWkDoc As Word.Document
Dim bOpenFlg As Boolean
Dim iRet As Integer
Dim sFileName As String
'---ワードオブジェクト作成
Set wWD = CreateObject("Word.Application")
wWD.Visible = True '←ワードが表示されない場合
'---オープン
Set wDoc = wWD.Documents.Open(App.Path & "\" & "サンプル.doc")
'---他のワード文書の開いているかチェック
bOpenFlg = False
For Each wDoc In wWD.Documents
sFileName = sFileName & wDoc.Name & vbCrLf
bOpenFlg = True
Next
'---ワード終了(他のワード文書が開いていない場合)
If Not bOpenFlg Then
MsgBox "開いているワード文書が無いので、ワードを終了します。"
wWD.Quit
Else
MsgBox "開いているワード文書があるので、ワードを終了しません。" & vbCrLf & _
"------------------------------" & vbCrLf & _
"ワード文書名:" & sFileName
End If
'---ワードオブジェクト開放
Set wDoc = Nothing
Set wDoc = Nothing
Set wWD = Nothing
【宣伝・・・(*´ω`)】

システム葵では、個人様向けでも企業様向けでも、パソコン修理から、パソコン設定、パソコンの使い方、LAN環境構築、ソフトウェア開発まで、様々な実績がありますので、困ったことがあれば、お気軽にご相談下さい。
ワード文書(*.doc)が開いているかのチェック方法についてです。
ワード文書(*.doc)などを扱う場合、プログラム終了時に他の文書が開いているか確認し、開いている文書が
無ければ、ワード自体を終了させる必要があります。これをしないと、ワード文書を閉じた後も、
ワード(winword.exe)というアプリケーションだけが起動したままになってしまいます。
このあたり、Excelなどでも一緒です。(ExcelとWord位しかやったことが無いのでわかりませんが。。。)
以下のサンプルコードは、同じインスタンス内でのみ開いている文書が無いか確認しています。
ただし、同じインスタンス内でのみ確認すれば問題ないと思います。
・Excelを起動して、同じ画面から他の文書を開いた場合、同じインスタンス内で複数の文書が開いている
ことになります。
・Excelを起動している状態で、スタートメニューやプログラムから新たにワードを立ち上げ文書を開いた場合、
別インスタンスで立ち上がります。
(タスクマネージャで確認すると、winword.exeが複数起動していることが確認できます。)
'==============================================================================
'
'ワード文書が開いているかチェック関連
''
'==============================================================================
'---------------------------------------------------
' 利用方法(以下必要に応じてプロシージャに貼り付けて下さい。)
'---------------------------------------------------
'------------------------------------------------------------
' 事前に参照設定を行なってください。
' 【参照設定方法】
' [プロジェクト]-[参照設定]-[MicroSoft Word 11.0 Object Library]にチェックを入れる。
' (11.0はバージョンにより異なります。ex)11.0 ⇒ Word2003, 9.0 ⇒ Word2000))
'------------------------------------------------------------
''==============================================================================
'
' ワード文書が開いているかチェック
'
'==============================================================================
Dim wWD As Word.Application
Dim wDoc As Word.Document
Dim wWkDoc As Word.Document
Dim bOpenFlg As Boolean
Dim iRet As Integer
Dim sFileName As String
'---ワードオブジェクト作成
Set wWD = CreateObject("Word.Application")
wWD.Visible = True '←ワードが表示されない場合
'---オープン
Set wDoc = wWD.Documents.Open(App.Path & "\" & "サンプル.doc")
'---他のワード文書の開いているかチェック
bOpenFlg = False
For Each wDoc In wWD.Documents
sFileName = sFileName & wDoc.Name & vbCrLf
bOpenFlg = True
Next
'---ワード終了(他のワード文書が開いていない場合)
If Not bOpenFlg Then
MsgBox "開いているワード文書が無いので、ワードを終了します。"
wWD.Quit
Else
MsgBox "開いているワード文書があるので、ワードを終了しません。" & vbCrLf & _
"------------------------------" & vbCrLf & _
"ワード文書名:" & sFileName
End If
'---ワードオブジェクト開放
Set wDoc = Nothing
Set wDoc = Nothing
Set wWD = Nothing
【宣伝・・・(*´ω`)】

システム葵では、個人様向けでも企業様向けでも、パソコン修理から、パソコン設定、パソコンの使い方、LAN環境構築、ソフトウェア開発まで、様々な実績がありますので、困ったことがあれば、お気軽にご相談下さい。