[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/01/25(Thu) 11:54
投稿者名:ハシ
Eメール:
URL :
タイトル:
エクセル プロセスの開放
エクセルのプロセス開放について質問です、下のソースで、上書きの処理を通るときにプロセスの開放ができず、処理終了時にエクセルEXEが消えずに残ってしまいます。。
プロシージャの終了前に
Set xlSheet = Nothing  
Set xlBook = Nothing  
Set xlApp = Nothing
はしてあります。
上書きの時にシートを削除して・・このへんの処理が問題のようなきがするのですが。
アドバイスお願いします。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
For lTblIdx = 1 To UBound(uTblInf)
            If InStr(strString, sSelTbls(lTblIdx)) > 0 Then
                
                '上書きの場合
                For i = 1 To lMaxRow
                    If sSelTbls(lTblIdx) = vRangeVal(i, C_T_COL_テーブル名) Then
                        lRow = i + C_T_ROW_上書き調整
                        lTblId2 = i
                        i上書きNum = i上書きNum + 1
                    End If
                Next
  
                Sheets(sSelTbls(lTblIdx)).Delete   '上書きするテーブルのシートを削除
                        
                uTblInf(lTblIdx).sテーブルID = "TBL" & Format$(lTblId2, "000")
                    
                
            Else
            
                '追加の場合
                lRow = C_T_ROW_START + lMaxRow
                
                lMaxRow = lMaxRow + 1
        
                uTblInf(lTblIdx).sテーブルID = "TBL" & Format$(lMaxRow, "000")
            End If
            
            objSheet.Cells(lRow, C_T_COL_テーブルID).Value = uTblInf(lTblIdx).sテーブルID
            objSheet.Cells(lRow, C_T_COL_テーブル名).Value = sSelTbls(lTblIdx)
        Next
        
        
        '余分にできてしまった行を削除
        If i上書きNum >= 1 Then
            For i上書きNum = 1 To i上書きNum
                objSheet.Rows(lMaxRow + C_T_ROW_START).Delete Shift:=xlUp
            Next
        End If
        
        Set objSheet = Nothing

投稿時間:2007/01/25(Thu) 12:00
投稿者名:
Eメール:
URL :
タイトル:
Re: エクセル プロセスの開放
Nothingで解放する前に

xlApp.Quit

でExcelを終了させてあげたらいいかな?

投稿時間:2007/01/25(Thu) 12:06
投稿者名:ハシ
Eメール:
URL :
タイトル:
Re^2: エクセル プロセスの開放
> Nothingで解放する前に
>
> xlApp.Quit
>
> でExcelを終了させてあげたらいいかな?

まだこのソースの下部でエクセルのシートをいじるので閉じるとだめなんです><

投稿時間:2007/01/25(Thu) 12:29
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: エクセル プロセスの開放
> まだこのソースの下部でエクセルのシートをいじるので閉じるとだめなんです><
Excel を起動していて、タスクマネージャに Excel.EXE が無い方(解放されている)が
異常なのでは。

投稿時間:2007/01/25(Thu) 12:29
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: エクセル プロセスの開放
> Sheets(sSelTbls(lTblIdx)).Delete   '上書きするテーブルのシートを削除

これが主原因ですね。
このサイトの[Excel のタスクを正常に終了できない現象]を再読してみてください。

投稿時間:2007/01/25(Thu) 13:28
投稿者名:ハシ
Eメール:
URL :
タイトル:
Re^2: エクセル プロセスの開放
> > Sheets(sSelTbls(lTblIdx)).Delete   '上書きするテーブルのシートを削除
>
変数にオブジェクトの参照を代入するところで
Set objSheet = objBook.Worksheets(C_SHT_T_テーブル一覧)
としているのに、Sheetsにしているため、開放できていないことがわかり解決しました。
ありがとうございました!