На 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.
В чем может быть проблема?
Спасибо!