VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2007/07/28(Sat) 08:50
投稿者のぞみ
Eメール
URL
タイトルエクセルがタスクマネージャに残ってしまいます。

いつも楽しく読ませていただいて諸先生方の凄さに
驚き関心さてられています。

今回、自力で解決できない問題があるので質問させていただきました。
尚、質問前には本サイトの下記Pageは読ませていただきました。
・VBからExcel及びWordを操作する時の注意事項(最初に必ずお読み下さい)
・Excel のタスクを正常に終了できない現象(こちらも合せてお読み下さい)
・VBからエクセルを操作する(その1)
・VBからエクセルを操作する(その2)
・既存のエクセルファイルを開く
そこでご質問なのですが、

==============Program==============
Option Explicit

Public xlApp As Excel.Application
Public xlBook As Excel.Workbook
Public xlSheet As Excel.Worksheet
Public DataPath , TargetFilePath , DefaultSheetName As String

Public Sub TargetFileOpen()
1.  DataPath = App.Path & "\data"
2.  TargetFilePath = DataPath & "\working.xls"
3.  DefaultSheetName = "Default"
4.      Set xlApp = CreateObject("Excel.Application")
5.      Set xlBook = xlApp.Workbooks.Open(TargetFilePath)
6.      Set xlSheet = xlBook.Worksheets(DefaultSheetName)
7. Call SheetCheck
End Sub

Public Sub SheetCheck()
Dim ObjSheet As Worksheet
Dim SheetNum As Integer
1.  For Each ObjSheet In xlApp.Worksheets
2.  SheetNum = SheetNum + 1
3.    IF SheetNum > 6 Then
4.       処理
5.     xlApp.Quit
6.     Set xlSheet = Nothing
7.     Set xlBook = Nothing
8.     Set xlApp = Nothing
9.   End If
10. Next
End Sub

以上の様なProgramなのですが「Public Sub SheetCheck()」の
End Subまで行ってもタスクマネージャのプロセスに『EXCEL.EXE』が
残ってしまいます。
注)
1.working.xlsにはマクロのある/なしに関わらず残る
2.『Public Sub SheetCheck()』1行目『For Each ObjSheet In xlApp.Worksheets』の前に
 5行目「xlApp.Quit」〜8行目「Set xlApp = Nothing」を置けば当然プロセスには
 残らず正常に終了出来る。
3.『Public Sub SheetCheck()』1行目『For Each ObjSheet In xlApp.Worksheets』と
 2行目の「SheetNum= heetNum+1」の間に5〜8行目の終了処理を置いたらプロセスに残る
このことから『For Each ObjSheet In xlApp.Worksheets』が悪いのが分かり、
For〜xlBook.Worksheetsや単にFor〜Worksheetsなどに変えてみてもダメでした。
また、元のProgramでも終了処理8行目まで行きVBのProgramを終了すると残りません。

どうかご指導の程宜しくお願いいたします。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -