開いているExcelをVC++からコントロールするにはAttachDispatch() OLE

サンプル

CApplication App;

CLSID     clsid;
LPDISPATCH     pDisp;
LPUNKNOWN     pUnk;
COleVariant     varnull;

// 既存のExcelのオブジェクトを取得
::CLSIDFromProgID(_T("Excel.Application"), &clsid);
if(::GetActiveObject(clsid, NULL, &pUnk) == S_OK)
{
    pUnk->QueryInterface(IID_IDispatch, (void**) &pDisp );
    App.AttachDispatch(pDisp);
}else{
    // 無いなら新規でExcelのオブジェクトを取得
    if (!App.CreateDispatch(_T("Excel.Application"))) {
        ASSERT(0);
        return;
    }
    App.put_Visible(FALSE);    // TRUE
}

ネタ元