(VC操作office)怎么读取office文档的批注内容?

pvlking1 2012-05-12 04:13:15
如题:用ole的方法。WORD EXCEL PPT 给一个例子参考下也行啊。我现在尝试了下word 的CComments类,能拿到批注的个数的。然后要怎么那具体某个批注的文本内容的?
...全文
77 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
尘雨 2012-05-12
  • 打赏
  • 举报
回复
if(FAILED(::CoInitialize(NULL)))
return;

HRESULT hr = S_OK;
Word::_ApplicationPtr pApp=NULL;
try
{

//CLSIDFromProgID(L"Word.Application", &clsid);
pApp.CreateInstance (__uuidof(Word::Application),NULL);
pApp ->PutVisible (VARIANT_TRUE);
Word::_DocumentPtr pDoc=pApp ->GetDocuments()->Open(&(_variant_t("C:\\FreeX.docx")));
_bstr_t content=pDoc->Content->Text;
long nCmtCount = pDoc->Comments->Count;
TRACE("Word content: %s \n", (LPCTSTR)(_bstr_t)content);

for (long i = 1; i < nCmtCount+1; i++)
{
Word::CommentPtr pCmt= pDoc->Comments->Item(i);
_bstr_t bstrCmt = pCmt->Range->Text;
TRACE("Word Comments[%d]: %s\n", i, (LPCTSTR)bstrCmt);
pCmt.Release();
pCmt = NULL;
}
pDoc->Close();
pApp->Quit();

// release documentptr smart pointer;
pDoc.Release();
}
catch (_com_error pCome)
{
TRACE("Error info: %s \n", (LPCTSTR)(_bstr_t)(pCome.Description()));
TRACE("Error info: %s \n", (pCome.ErrorMessage()));
}
if (pApp)
{
pApp.Release();
}
::CoUninitialize();
尘雨 2012-05-12
  • 打赏
  • 举报
回复
Word::_DocumentPtr pDoc=pApp ->GetDocuments()->Open(&(_variant_t("C:\\FreeX.docx")));
_bstr_t content=pDoc->Content->Text;
long nCmtCount = pDoc->Comments->Count;
TRACE("Word content: %s \n", (LPCTSTR)(_bstr_t)content);
Word::CommentPtr pCmt= pDoc->Comments->Item(1);
_bstr_t bstrCmt = pCmt->Range->Text;
TRACE("Word Comments: %s, %d \n", (LPCTSTR)bstrCmt, nCmtCount);
pDoc->Close();
pApp->Quit();
向立天 2012-05-12
  • 打赏
  • 举报
回复
通过录制及宏看一下VBA代码
然后再找对应的com接口
尘雨 2012-05-12
  • 打赏
  • 举报
回复
你用的word application对象吗?

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧