Ask Your Question
4

How can I correctly invoke the Office automation COM APIs using up-to-date C++?

asked 2022-03-14 11:00:00 +0000

plato gravatar image

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2022-06-04 05:00:00 +0000

nofretete gravatar image

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.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account. This space is reserved only for answers. If you would like to engage in a discussion, please instead post a comment under the question or an answer that you would like to discuss

Add Answer


Question Tools

Stats

Asked: 2022-03-14 11:00:00 +0000

Seen: 15 times

Last updated: Jun 04 '22