お世話になっています。GGです。
ダイアログ上であるボタンを押すとExcelを起動しています、
終了するときに、OKボタンを押して終了します。
問題なのは、
開いているExcelはExcel画面自体の終了ボタン(右上の×)
とメニュー上で”終了”を押すとExcelを閉じました。
そのときに、
ダイアログ上OKボタンを押すとエラーが出ました。
その回避仕方があるのでしょうか。
例:
起動部分:
pBook = pApp->Workbooks->Open(C:\\送受信箱\\Test1.xls);
SheetsPtr pSheets = pBook->GetWorksheets();
_WorksheetPtr pSheet;
for (short i=1; i<= pBook->GetWorksheets()->GetCount(); i++) {
pSheet = pSheets->GetItem(COleVariant(i));
if (pSheet->GetName() == _bstr_t(RGN_JJ)) {
pSheet->Activate();
break;
}
}
終了部分(OKボタン)
if(pApp!=NULL){
pBook->Close();
pApp->Quit();
pApp.Release();
}
いろいろ試したのですが、うまく行かないです。
環境:.Net MFC使用、Win2000
以上、よろしくお願いします。
try~catchして _com_err を捕まえましょう。
if ( pApp )
{
if ( pBook )
{
try
{
this->pBook->Close();
}
catch ( _com_error& e )
{
AfxMessageBox( e.ErrorMessage() );
}
}
try
{
this->pApp->Quit();
}
catch ( _com_error& e )
{
AfxMessageBox( e.ErrorMessage() );
}
}
Blueさん
ご返事ありがとう。
if ( pBook )
{
try
{
this->pBook->Close();
}
catch ( _com_error& e )
{
AfxMessageBox( e.ErrorMessage() ); //ここで
}
}
エラーメッセージ:
起動されたオブジェクトはクライアントから切断されました。
どう対処すればいいでしょうか。
よろしくお願いします。
Blueさん
解決しました。
if ( pBook )
{
try
{
this->pBook->Close();
pBook=NULL; //ここで
}
catch ( _com_error& e )
{
AfxMessageBox( e.ErrorMessage() );
pBook=NULL; //ここで
}
}
終了部分(OKボタン)
if(pApp!=NULL){
pApp.Release();
pApp=NULL;
}
ありがとうございました。