A
Hallo
ich habe eine Anwendung erstellt, die mittel IDispatch Word steurt. Dabei möchte ich vor allem in Vorlagen bestimmte Wörter suchen und ersetzen.
Das funktioniert auch, allerdings wird nicht Textfeldern gesucht.
Ich habe für iDispatch einen Beispielcode verwendet und diesen angepasst.
Ich denke das hat mit dem Content-Objekt zu tun, finde aber keine Lösung.
Könnt Ihr was dazu sagen bitte?
Gruss
Achim
Der code
IDispatchPtr spContent = NULL;
hr = spDispDokument.GetPropertyByName(L"Content", &vResult);
spContent = vResult.pdispVal;
CComDispatchDriver spDispContent(spContent);
// Mit dem Content - Object holen wir uns das Find - Object:
IDispatchPtr spFind = NULL;
hr = spDispContent.GetPropertyByName(L"Find", &vResult);
spFind = vResult.pdispVal;
CComDispatchDriver spDispFind(spFind);
hr = spDispFind.Invoke0(L"ClearFormatting", &vResult);
VARIANT vArgsExecute[11];
memset(vArgsExecute, 0, sizeof(VARIANT) * 11);
// Die Parameter müssen rückwärts angegeben werden !
// Parameter 1 = "FindText", der Text der gesucht wird.
vArgsExecute[10].vt = VT_BSTR;
vArgsExecute[10].bstrVal = SysAllocString(L"@Email");
// Parameter 2 = "MatchCase", eine Kennung, ob Groß-/Kleinschreibung
vArgsExecute[9].vt = VT_BOOL;
vArgsExecute[9].boolVal = FALSE;
// Parameter 3 - 9 werden hier nicht benutzt
// Parameter 10 = "ReplaceWith", der Text, mit dem ersetzt werden soll:
vArgsExecute[1].vt = VT_BSTR;
vArgsExecute[1].bstrVal = SysAllocString(L"xy@dings.de");
// Parameter 11 = "Replace", die Angabe,
// wie viele Ersetzungen durchgeführt werden.
// "wdReplaceOne" = 1 ersetzt genau ein Vorkommen.
// "wdReplaceAll" = 2 ersetzt alle Vorkommen.
vArgsExecute[0].vt = VT_I2;
vArgsExecute[0].lVal = 2;