Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

To correctly invoke Office automation COM APIs using up-to-date C++, you can use the following steps:

  1. Include the required headers:
#include <Windows.h>
#include <atlbase.h>
#include <atlcom.h>
  1. Create an instance of the COM object:
HRESULT hr;

TCHAR szProgID[] = _T("Excel.Application");
CLSID clsid;

hr = CLSIDFromProgID(szProgID, &clsid);
ATLENSURE_SUCCEEDED(hr);

CComPtr<IDispatch> spExcelApp;
hr = CoCreateInstance(clsid, NULL, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void**)&spExcelApp);
ATLENSURE_SUCCEEDED(hr);
  1. Call the required method or property:
CComVariant svarResult;
CComDispatchDriver pDisp(spExcelApp);

hr = pDisp.GetPropertyByName(L"Version", &svarResult);
ATLENSURE_SUCCEEDED(hr);

wprintf(L"Excel version: %ls\n", svarResult.bstrVal);

Note that the above example is for Excel application and the ProgID for other Office applications might be different. Also, ensure that you use appropriate error handling techniques, like exceptions or HRESULT checking, for robustness.