내 문제는 제목에 오류 메시지입니다 사용할 수 없습니다C++의 기본 RCW에서 분리 된 COM 개체는
COM object that has been separated from its underlying RCW cannot be used.
내가 그것을 구글 위해 노력했다,하지만 난에 관련된 유일한 해결책을 찾을 수 파괴자/해제 개체. 그것은 내가하고 싶은 것이 아닙니다. 한마디로
String^ filename="c:\\wb.xlsx";
Microsoft::Office::Interop::Excel::Application^ exApp= gcnew Microsoft::Office::Interop::Excel::ApplicationClass();
exApp->Visible=false;
exApp->Workbooks->Open(filename, 2, true, Type::Missing, Type::Missing, Type::Missing, true, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing, Type::Missing);
Worksheet^ exWss;
for (int x = 0; x <= checkedListBox1->CheckedItems->Count - 1; x++){
for (int p=0; p<checkedListBox1->Items->Count; p++){
if (checkedListBox1->CheckedItems[x]->ToString()->Equals(checkedListBox1->Items[p]->ToString())){
p++;
exWss = safe_cast<Worksheet^> (exApp->ActiveWorkbook->Sheets[p]);
}
}
}
:
먼저, 여기에 내 코드 나는 checkedlistbox이 필요한 물건이 선택되었을 때 코드의이 부분이 실행된다. checkedlistbox에는 Excel 통합 문서의 다른 시트가 나열됩니다. checkedlistbox에서 선택한 항목에 따라 통합 문서에서 시트를 선택하려고합니다.
마지막 코드 줄 (exWss = safe_cast (exApp-> ActiveWorkbook-> Sheets [p]);)에서 언급 한 오류 메시지가 나타납니다.
마샬 해제가 이러한 문제를 일으킬 수 있음을 알았습니다. 다른 함수에서 나는 Marshal.Releasecomobject를 실행하지만 완전히 분리되어 있고, 그것도없이 같은 오류가 발생한다.
모든 아이디어를 얻을 수 있습니다.