wps的range对象
文章转自王牌软件
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
只回答业务咨询
站长推荐:NSetup一键部署软件
一键式完成美化安装包制作,自动增量升级,数据统计,数字签名。应对各种复杂场景,脚本模块化拆分,常规复杂的脚本代码,图形化设置。无需专业的研发经验,轻松完成项目部署。(www.nsetup.cn)
环境:xp sp3,vs2008,wps2012,word2010
如果直接设置Range对象的Start或End属性可能会报异常,所以使用SetRange方法或者让Start小于等于Range的End值
word2010直接设置Start的值超过End不会跑出异常,但是会将End=Start
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
void Ctest09242Dlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 ::CoInitialize(NULL); //OnOK(); WPS::_ApplicationPtr g_app; CLSID clsid; HRESULT hr; hr=::CLSIDFromProgID(L"WPS.Application",&clsid); //通过ProgID取得CLSID try { g_app.CreateInstance(__uuidof(WPS::Application )) ; } catch (...) { AfxMessageBox("啊呀不是没装wps吧?"); return; } WPS::DocumentsPtr docs =g_app->GetDocuments(); //内容:abcdefghijklmn CString sWord="e:\\1011.doc"; WPS::_DocumentPtr p_doc; _bstr_t sNull; try { p_doc = docs->Open( _bstr_t(sWord), VARIANT_FALSE, // 确认转换 VARIANT_TRUE, // 只读 VARIANT_FALSE, // 添加到最近文件中 sNull, // 文档口令. sNull, // 模板口令. VARIANT_FALSE, // 恢复原状. sNull, // 写文档口令. sNull, // 写模板口令. 0, // 格式. KSO::ksoEncodingAutoDetect, // 编码 VARIANT_TRUE, // 可见 VARIANT_FALSE, // 打开并修复 0, // DocumentDirection wdDocumentDirection LeftToRight VARIANT_FALSE // 无编码对话框 ); } catch(_com_error) { g_app->Quit(&vtMissing,&vtMissing,&vtMissing); return ; } g_app->put_Visible(VARIANT_TRUE); WPS::SelectionPtr p_sel = p_doc->Get_Selection(); WPS::FindPtr p_fid = p_sel->GetFind(); CString sField = "cde"; _variant_t FindText=(LPCTSTR)sField; _variant_t ReplaceWith=vtMissing ; _variant_t Forward=VARIANT_TRUE; _variant_t Wrap=(_variant_t)(WPS::wpsFindContinue); _variant_t Format=VARIANT_FALSE; _variant_t MatchCase=VARIANT_FALSE; _variant_t MatchWholeWord=VARIANT_FALSE; _variant_t MatchWildcards=VARIANT_FALSE; _variant_t MatchSoundsLike=VARIANT_FALSE; _variant_t MatchAllWordForms=VARIANT_FALSE; VARIANT_BOOL bExec = p_fid->Execute( &FindText, &MatchCase, &MatchWholeWord, &MatchWildcards, &MatchSoundsLike, &MatchAllWordForms, &Forward, &Wrap, &Format, &ReplaceWith,&vtMissing); WPS::RangePtr lprage = p_sel->GetRange(); long ns = lprage->Start; //2 long ne = lprage->End; //5 CString str = lprage->GetText(); try { //lprage->Start = 6; //异常 //lprage->End = 1; //异常 lprage->SetRange(6,7); //正确 } catch (_com_error& e) { CString ErrorStr; ErrorStr.Format( "Code = %08lx\n\tCode meaning = %s\n\tSource = %s\n\tDescription = %s\n", e.Error(), e.ErrorMessage(), (LPCSTR)(_bstr_t)e.Source(), (LPCSTR)(_bstr_t)(e.Description())); } long ns1 = lprage->Start; long ne1 = lprage->End; str = (CString)(LPCSTR)lprage->GetText(); WPS::RangePtr lprage2 = p_sel->GetRange(); long ns2 = lprage2->Start; long ne2 = lprage2->End; } |
学习日记,兼职软件设计,软件修改,毕业设计。
本文出自 学习日记,转载时请注明出处及相应链接。
本文永久链接: https://www.softwareace.cn/?p=446