VB2005(ExpressEdition)からExcelブックを更新処理しています。VB2005を「デバッグモード」でラン時にアプリの異常の為「デバッグ停止」で終了した時、次にランすると全てのExcelブックやPersonalFileが「読取り専用」で立ち上がりうまく処理できません。(正常終了時はClose/Quit処理しており問題ないのですが)ExcelAppliのOpen時に二重起動を防止する方法を教えてください。Excelブックの二重起動チェックはしています。
以下はコードの抜粋です。
Dim ExcelApp As Excel.Application = CType(CreateObject _("Excel.Application"), Excel.Application)
Dim myBok As Excel.Workbook
Try
myBok = ExcelApp.Workbooks(Dir(myFileFullName))
Catch ex As Exception
myBok = Nothing
End Try
If IsNothing(myBok) Then
・
・
以上 よろしくお願いします。
Excel オブジェクトを、きちんと解放していないようですね。
VB6 / VBA / VBS の場合と、VB.NET の場合とでは、Excel オブジェクトの
解放手順が異なることに注意してください。
提示されたコードだと(正常に処理が完了した場合も)、アプリが
開いている間は、Excel が正しく終了されない可能性が出てきます。
下記を参考に、コードを書き直してみてください。
http://support.microsoft.com/kb/317109/ja
> 以下はコードの抜粋です。
(1) 提示した URL にも書かれていますが、個々の COM オブジェクトは、
きちんと変数に受けておくようにしましょう。
(2) 参照設定をしているにも関わらず、わざわざ CreateObject を
使用しているのは、あまり好ましい選択ではないかと。
(3) Excel オブジェクトを解放したいのであれば、使用済みの変数に
Nothing を代入する「だけ」のコードはスッパリ忘れましょう。
VB.NET からの利用後には、ReleaseComObject の呼び出しが必要です。
魔界の仮面弁士さん、ありがとうございました。ご指摘のとおりに該当プログラムを修正して正常終了時も異常終了時とも正常であることを確認できました。的確なご指摘と感謝いたします。今後ともご指導お願いいたします。
| ツイート |
|