質問: strBookName Then ```
回答: Dim wd As Object, ts As Object Dim r As Long, p As Integer Dim key As String 'ファイルが展開していない場合はフラグが0 key = 0 'ワードを、エクセルで扱えるようにする Set wd = CreateObject("Word.Application") 'ワードの機能である、タスクマネージャ(「Tasks」)の中身を1つずつ調べる r = 0 For Each ts In wd.Tasks '「impex」ファイルだけ処理したいので、見つかった「ts」に「.impex」という文言が入っているか調べるのに必要です。 p = InStr(ts, ".impex") 'もし、起動している(「Visible」)プログラムで、なおかつ、「.impex」という文字を含んでいれば、1 行カウント If ts.Visible = True And p > 0 Then r = r + 1 'MsgBox ts & "あった : " & Right(datFile, 24) 'ファイル名と一致するか否か確認 ※文字数に合わせて数値の変更:Right(datFile, ★) If Left(ts, 17) Like Left(Right(datFile, 24), 17) Then 'エラーメッセージを表示してシナリオ終了 MsgBox "同一名称の.impexファイルが開いています。ファイルを閉じてから再度実行してください。" Exit Sub Else 'MsgBox Left(ts, 17) & ":" & Left(Right(datFile, 24), 17) & "は一致しない" End If '実際に「ts.Name」の値は、「ファイル名」+「表示しているアプリケーション」になってしまうので、「Mid()」関数によって、後ろの部分を削除しています(正確には、「ts.Name」の1文字目から、「.impex」までをセルに書き込んでいます)。 Cells(r, 1).Value = Mid(ts.Name, 1, p + 3) End If Next 'ファイルを展開 Open datFile For Output As #1 'ワードを終了 wd.Quit Set wd = Nothing