我读取的时候代码是这样的//name
        range.AttachDispatch(sheet.get_Cells()); range.AttachDispatch(range.get_Item(COleVariant((long)10),COleVariant((long)2)).pdispVal);
vResult = range.get_Value2();
str= (CString)vResult.bstrVal;


range.AttachDispatch(range.get_Item(COleVariant((long)10),COleVariant((long)10)).pdispVal);
vResult = range.get_Value2();
str1= (CString)vResult.bstrVal;
MessageBox(str1);以前照着一个网页写的。现在我的问题是:range我这样取一个单元格的值后,还要进行什么释放操作的? 我现在只能取到str的值,str1取不到(为空),只取str1的值的话,str1的值能正常获取的。

解决方案 »

  1.   

    AttachDispatch()与DetachDispatch()相对应,我觉得你应该先将前一个DetachDispatch()再AttachDispatch()
      

  2.   

    COleDispatchDriver::AttachDispatch( LPDISPATCH lpDispatch, BOOL bAutoRelease = TRUE );
    默认的会自动释放,因此可以不用释放操作但用同一个变量显然是不合适的rangeUser.AttachDispatch(sheet.get_Cells());range.AttachDispatch(rangeUser.get_Item(COleVariant((long)10),COleVariant((long)2)).pdispVal);
        
    range.AttachDispatch(rangeUser.get_Item(COleVariant((long)10),COleVariant((long)10)).pdispVal);
      

  3.   

    用DetachDispatch()程序报错的。