• 締切済み

Excelの残骸

VBからExcelを起動しています。 Set xlSheet = CreateObject("Excel.Application") xlSheet.Workbooks.Open FileName:="C:\My Documents\demo.xls" Excelでの処理が終わった時、Excelを終了させます。 xlSheet.Quit 「Quit」で終わらせているのですが、 どうも「プログラムの強制終了」で見る限り Excelが残ったままです。 対処策はあるのでしょうか? 教えてください。お願いします。

みんなの回答

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

EXCELの残骸・・・ 確かに残ることがあります。 EXCELに対してのコーディングの仕方により、残ることがあるそうです。 ぼくも経験しました。 Set xlSheet = CreateObject("Excel.Application")       ・       ・       ・ xlSheet.Quit Set xlSheet = Nothing の間を修正することにより、回避できるそうなのですが・・・ その時はコードが長くてほとんど完成していた物の修正ということもあり、別の方法で強制的に終了させました。 サンプルは、全てのEXCELを閉じるようになってます。 Sub quitAllExcel()   Dim strSQL   As String   Dim objXlsApp  As Object   Dim lngCnt   As Long   Dim i      As Long      'エクセルの起動している数を得る   strSQL = "SELECT Handle FROM Win32_Process WHERE Name = ""EXCEL.EXE"""   lngCnt = GetObject("winmgmts:").ExecQuery(strSQL).Count      '問い合わせ   If lngCnt < 1 Then     MsgBox "EXCELは起動してません"     GoTo PGMEND   ElseIf vbCancel = MsgBox(lngCnt & "個の起動中のEXCELをみつけました。全て破棄終了しますか?", vbOKCancel) Then     GoTo PGMEND   End If      'エクセル閉じる処理   For i = 1 To lngCnt     Set objXlsApp = GetObject(, "Excel.Application")     On Error GoTo 0     If Not (objXlsApp Is Nothing) Then       Call quitExcel(objXlsApp)       Set objXlsApp = Nothing     End If   Next i PGMEND: End Sub '指定のエクセルアプリケーション内で開いているブック全てを「保存済み」状態にして終了させる Sub quitExcel(inObjXlsApp As Object)   Dim objXlsBook As Object      For Each objXlsBook In inObjXlsApp.WorkBooks     objXlsBook.Saved = True   Next objXlsBook   inObjXlsApp.Quit End Sub

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

Setで作成したObjectにはNothingをセットして消してください。 Set xlSheet = Nothing

noname#172317
質問者

補足

お返事ありがとうございます。 現在、Qutiの後に Nothingも記述しています。 それでも、残骸があるのです。

関連するQ&A