tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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行記述したコードを実行しましたが、プロセスは残ったままでした。

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

古いスレッドにレスはつけられません。