OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

Excelの残骸

  • 困ってます
  • 質問No.231028
  • 閲覧数331
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

VBからExcelを起動しています。

Set xlSheet = CreateObject("Excel.Application")
xlSheet.Workbooks.Open FileName:="C:\My Documents\demo.xls"

Excelでの処理が終わった時、Excelを終了させます。

xlSheet.Quit

「Quit」で終わらせているのですが、
どうも「プログラムの強制終了」で見る限り
Excelが残ったままです。
対処策はあるのでしょうか?
教えてください。お願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル14

ベストアンサー率 33% (1403/4213)

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

Set xlSheet = Nothing
補足コメント
noname#172317

お返事ありがとうございます。

現在、Qutiの後に Nothingも記述しています。
それでも、残骸があるのです。
投稿日時 - 2002-03-08 10:01:31
  • 回答No.2
レベル12

ベストアンサー率 65% (276/422)

EXCELの残骸・・・ 確かに残ることがあります。 EXCELに対してのコーディングの仕方により、残ることがあるそうです。 ぼくも経験しました。 Set xlSheet = CreateObject("Excel.Application")       ・       ・       ・ xlSheet.Quit Set xlSheet = Nothing ...続きを読む
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
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ