投稿日 | : 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を終了すると残りません。
どうかご指導の程宜しくお願いいたします。