После перехода на VC++ 2008 (перестал работать код с Excel)
От: AlexFilan  
Дата: 15.12.10 21:23
Оценка:
На VS2003 работает следующий код

int MAX_PARAM_COUNT(31);
HRESULT hr;
CComVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR);
CComVariant vResult;
VARIANT vArgs[31];

hr = m_excel.CoCreateInstance(L"Excel.Application", 0, CLSCTX_LOCAL_SERVER);

CComVariant vWorkbooks;
hr = m_excel.GetPropertyByName(L"Workbooks", &vWorkbooks);

CComDispatchDriver workbooks(vWorkbooks.pdispVal);
CComVariant vSrcFileName(strReport.utf16());
hr = workbooks.Invoke1(L"Add", &vSrcFileName, &vResult);

CComDispatchDriver workbook(vResult.pdispVal);

memset(vArgs, 0, sizeof(VARIANT) * MAX_PARAM_COUNT);
vArgs[MAX_PARAM_COUNT-1].vt = VT_BSTR;
vArgs[MAX_PARAM_COUNT-1].bstrVal = SysAllocString(L"GetParamCount");
hr = m_excel.InvokeN(L"Run", &vArgs[MAX_PARAM_COUNT-1], 1, &vResult);
SysFreeString(vArgs[MAX_PARAM_COUNT-1].bstrVal);
int parameters = vResult.lVal;


После перехода на VS 2008 появились непонятки с вызовом функций VBA
После выполнения

hr = m_excel.InvokeN(L"Run", &vArgs[MAX_PARAM_COUNT-1], 1, &vResult);


говорит что hr = 0x80020009 Exception occurred.

В чем может быть проблема?

Спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.