KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I've a perfectly working function to find and replace a variable with text in word documents. HRESULT CMSWord::FindReplace( CString szVar, CString szText, bool bOnlyOnce/*=false*/ ) { if(m_pWApp==NULL || m_pActiveDocument==NULL) return E_FAIL; IDispatch *pDocApp; { VARIANT result; VariantInit(&result); OLEMethod(DISPATCH_PROPERTYGET, &result, m_pActiveDocument, L"Application", 0); pDocApp= result.pdispVal; } IDispatch *pSelection; { VARIANT result; VariantInit(&result); OLEMethod(DISPATCH_PROPERTYGET, &result, pDocApp, L"Selection", 0); pSelection=result.pdispVal; } IDispatch *pFind; { VARIANT result; VariantInit(&result); OLEMethod(DISPATCH_PROPERTYGET, &result, pSelection, L"Find", 0); pFind=result.pdispVal; } OLEMethod(DISPATCH_METHOD, NULL, pFind, L"ClearFormatting",0); szText.Replace(_T("\r\n"), _T("\v")); COleVariant sVariable(szVar); COleVariant sReplaceText(szText); COleVariant replace((long)2); COleVariant varBoolTrue; varBoolTrue.boolVal = true; COleVariant varBoolFalse; varBoolFalse.boolVal = false; COleVariant wdContinue((long)1); bool bFound=false; IDispatch *pExecute = NULL; { for(;;) { VARIANT result; VariantInit(&result); if(OLEMethod(DISPATCH_METHOD, &result, pFind, L"Execute", 8, wdContinue, varBoolTrue, varBoolFalse, varBoolFalse, varBoolFalse, varBoolTrue, varBoolFalse, sVariable)==S_OK) { pExecute=result.pdispVal; if(!pExecute) break; bFound = true; if(szText.IsEmpty()) DeleteChar(false); else SetSelectionText(szText); } else break; if(bOnlyOnce) break; } } pDocApp->Release(); pSelection->Release(); pFind->Release(); if
Tags (comma-separated)
Save Edits
Cancel