タイトル : ExcelシートのCopyメソッド使用時にプロセスを解放するには 投稿日 : 2009/03/18(Wed) 14:58 投稿者 : kaw
お世話になっております。kawと申します。 VB6での、Excelのプロセスが残る現象についてです。 (※Excelのプロセス解放に関する質問が頻出であることは承知しており、 既出等が無いか、可能な限り調査いたしましたが、解決に至っておりません。) 【現象】 VB6で、WorksheetオブジェクトのCopy()メソッドを呼び出した場合にのみ、 Excelのプロセスが残る現象が発生しております。 プロセスが残らないようにする方法を教えてください。 【環境】 Windows XP Excel 2000 VisualBasic 6.0 【再現コード】 下記に、現象の再現が可能なミニマムコードを記載いたします。 --------------------------------------------------------------------- Option Explicit Public Sub Main() Dim xlApp As New Excel.Application xlApp.Visible = True Dim xlBook As Excel.Workbook Set xlBook = xlApp.Workbooks.Open("D:\hoge.xls") Dim xlSheets As Excel.Sheets Set xlSheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet Set xlSheet = xlSheets.Item(1) '↓この行をコメントアウトするとプロセスは残らない Call xlSheet.Copy(Before:=xlSheet) Call xlBook.Save Set xlSheets = Nothing Set xlSheet = Nothing '---【A】 Call xlBook.Close: Set xlBook = Nothing Call xlApp.Quit: Set xlApp = Nothing End Sub ------------------------------------------------------------------------- よろしくお願い致します。 【備考】 VB.NETにおいて、WorksheetオブジェクトのCopyを使用した場合は、 参照カウントが2になるので、解放を2度行う、という旨の解決方法がありました。(下記URL) http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32241&forum=7 そこで、この方法を参考にし、 【A】を2行記述したコードを実行しましたが、プロセスは残ったままでした。 |