如题,看了好多资料都是用的mfc,有不用mfc调用word的吗?谢谢!!!
解决方案 »
- VS2008 list control 平面滚动条问题
- 能在后台给CTreeCtrl发双击消息吗?
- 用TransparentBlt() 会出错,是不是要什么lib ?
- 有什么加密方法可以做到:输入是字符窜(不含小于0x20的字符),加密后仍然是字符窜(不能有小于0x20的字符)? 最好密文长度比原文件短
- 请教:如何在CEidt控件中进行自动换行回车控制
- 请问如何实现控件ActiveX打印功能
- _______ATL的composite控件如何控制内置的控件?
- DCOM多线程问题!Help
- 为什么老是抱 XXX.obj : error LNK2001: unresolved external symbol YYYY的 错误?
- 求教网络编程高手:如何直接设置Windows TCP/IP参数?
- MFC里面,聊天软件的用户列表的实现的讨论
- HANDLE添加附加数据
直接使用COM API即可,也可以用些ATL提供的帮助,比如智能指针。下面的例子代码,用COM API 打开一个word 应用对象,并打开文档:STDMETHODIMP CDocObject::InstantiateAndLoadWord(LPWSTR pwszFile, IOleObject **ppole)
{
IUnknown *punkApp=NULL;
MSWord::_Application *app=NULL;
MSWord::Documents *wDocs=NULL;
MSWord::_Document *wDoc=NULL;
CLSID clsidWord;
HRESULT hr = CLSIDFromProgID(OLESTR("Word.Application"), &clsidWord);
if (FAILED(hr)) return hr;
hr = CoCreateInstance(clsidWord, NULL, CLSCTX_LOCAL_SERVER, IID_IUnknown, (void**)&punkApp);
if (SUCCEEDED(hr))
{
hr = punkApp->QueryInterface(__uuidof(MSWord::_Application),(LPVOID *)&app);
if (SUCCEEDED(hr))
{
hr = app->get_Documents(&wDocs);
VARIANT vNoParam;
VariantInit(&vNoParam);
V_VT(&vNoParam) = VT_ERROR;
V_ERROR(&vNoParam) = DISP_E_PARAMNOTFOUND;
VARIANT vReadOnly;
VariantInit(&vReadOnly);
V_VT(&vReadOnly) = VT_BOOL;
V_BOOL(&vReadOnly) = VARIANT_FALSE; VARIANT vStrName;
vStrName.vt = VT_BSTR;
BSTR bstrFilename = SysAllocString(pwszFile);
vStrName.bstrVal = bstrFilename; wDocs->Open(&vStrName,&vNoParam,&vReadOnly,&vNoParam,&vNoParam,&vNoParam,&vNoParam,
&vNoParam,&vNoParam,&vNoParam,&vNoParam,&vNoParam,&vNoParam,&vNoParam,&vNoParam,&vNoParam);
app->get_ActiveDocument(&wDoc);
if (SUCCEEDED(hr))
hr = wDoc->QueryInterface(IID_IOleObject, (void**)ppole);
VariantClear(&vReadOnly);
VariantClear(&vNoParam);
SysFreeString(bstrFilename);
}
}
if (wDoc != NULL)
wDoc->Release();
if (wDocs != NULL)
wDocs->Release();
if (app != NULL)
app->Release();
if (punkApp != NULL)
punkApp->Release();
return hr;
}
Excel操作是个难题,因为如果深入下去。Excel 的COM方式有很多BUG。
对,VBA以组件方式提供,至于是什么方式调用它,没有任何关系,你可以用MFC,也可以用ATL,用VC,也可以用VB ,Delphi,都可以