• ベストアンサー

VBからExcelを起動しExcel終了を判定したい

前回の質問に続く内容なのですが、Excelの起動は おかげ様でうまくいきました。 が、直後のコーディングが??? Excelを起動後にモーダルで終了を待ちたいのですが どうすればよいのか分かりません、HELPをめくっている際にちらっと見た覚えはあるのですが、それがどこにあったのか探せなくなりました。 助けてください!

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

はいはい(笑) #19166の続きってことですので、Excelを使うのに New Excel.Application で、Excelのインスタンスを作成しているわけですよね。 それでしたら、ExcelApp変数の Visibleプロパティを見れば動いてるかどうか分かるみたいです。 以下、プログラム例です。 '*-*-*-この部分はモジュールの先頭部分に記述*-*-*- '寝る為のAPI Call SLEEP(寝るミリ秒数) Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '*-*-*-ここまで*-*-*- Private Sub Command2_Click()   Dim ExcelApp As Excel.Application   'Excelのインスタンスを作成して表示   Set ExcelApp = New Excel.Application   ExcelApp.Visible = True      'Excelが終了されるとVisibleがFalseになる   'ので、それまで待機   Do     Call Sleep(250) 'しばらく寝る     DoEvents   Loop While ExcelApp.Visible = True      'Excel終了時の処理   MsgBox "Excelが終わったよん"      'インスタンスの開放   Set ExcelApp = Nothing End Sub ***************************************** 尚、Shellコマンドを使って起動した場合には、 Dim TaskID as long TaskID=Shell("Excel.EXE …") on error resume next do  Err.Clear  AppActivate TaskID Loop Until Err<>0 Msgbox "Excelが終わったよ" みたいな感じで、アプリの起動を監視できます 返事は一回!

rukaandkaito
質問者

お礼

まっことおおきに!(土佐弁どえす) うまくいきました。 非常に助かりました。 ARCさん、師匠と呼ばせてください(笑)