我要删除一个隐藏的WorkSheet,找到这个隐藏的Worksheet了,调用Delete方法,返回VARIANT_FALSE.
代码如下:// AutoWrap 是一个外包函数,内部实现了Invoke方法.
CComVariant varResult;
HRESULT hr = AutoWrap(DISPATCH_PROPERTYGET,&varResult,m_pWorkBook,L"Worksheets",0);
if(SUCCEEDED(hr))
{
IDispatch* pWorkSheets = varResult.pdispVal;
CComVariant varTrue(TRUE);
hr = AutoWrap(DISPATCH_PROPERTYGET,&varResult,pWorkSheets,L"Count",0);
if(SUCCEEDED(hr))
{
long lCount = varResult.lVal;
for(int i=lCount;i>0;i--)
{
CComVariant varIndex(i);
hr = AutoWrap(DISPATCH_PROPERTYGET,&varResult,pWorkSheets,L"Item",1,varIndex);
if(SUCCEEDED(hr))
{
IDispatch* pSheet = varResult.pdispVal;
hr = AutoWrap(DISPATCH_PROPERTYGET,&varResult,pSheet,L"Visible",0);
if(SUCCEEDED(hr))
{
BOOL bVisible = varResult.lVal==VARIANT_TRUE?TRUE:FALSE;
if(!bVisible)
{
OutputDebugStringW(L"hide worksheet!\r\n");
if(SUCCEEDED(hr))
{
varResult.vt = VT_EMPTY;
hr = AutoWrap(DISPATCH_METHOD,&varResult,pSheet,L"Delete",0);
if(FAILED(hr))
{
OutputDebugStringW(L"Remove failed!\r\n");
}
// 这里hr=S_OK,varResult=VARIANT_FALSE,表示删除失败.
}
}
}
SAFE_RELEASE(pSheet);
}
}
}
SAFE_RELEASE(pWorkSheets);
}查了好久资料,没有结果.有没有高手遇到过这种问题??