Automation (COM) mit OpenOffice: PropertySet(?)
-
Hallo,
ich versuche, OpenOffice über die Automation-Schnittstelle (COM) anzusteuern. Jedoch weiß ich nicht, wie ich PropertySets anlegen soll, da ich sie für die Funktion "replaceAll" (Suchen/Ersetzen) brauche.
Weiß jemand, wie man über die COM-Schnittstelle diesen Search-Deskriptor richtig erstellt?
Ich vermute, daß deswegen "replaceAll" ein "Ausnahmefehler aufgetreten" zurückgibt. Alle anderen Funktionen davor klappen auch bis dahin.Hier mein bisheriger Code:
if (FAILED(RSCom::Invoke(m_ooDoc, DISPATCH_METHOD, &vresult, NULL, NULL, OLESTR("createReplaceDescriptor"), NULL))) { return false; } LPDISPATCH preplaceDesc = V_DISPATCH(&vresult); preplaceDesc->AddRef(); if (FAILED(RSCom::Invoke(preplaceDesc, DISPATCH_METHOD, &vresult, NULL, NULL, OLESTR("setSearchString"), TEXT("v"), vsearch))) { return false; } //ReplaceString setzen VARIANT vreplace; vreplace.vt = VT_BSTR; vreplace.bstrVal = SysAllocString(RSCom::RSQStringToBSTR(replaceString)); if (FAILED(RSCom::Invoke(preplaceDesc, DISPATCH_METHOD, &vresult, NULL, NULL, OLESTR("setReplaceString"), TEXT("v"), vreplace))) { return false; } SAFEARRAY* psafeReplaceArray = SafeArrayCreateVector(VT_VARIANT, 0, 1); LPDISPATCH psetReplaceString = V_DISPATCH(&vresult); long index = 0; HRESULT hr = SafeArrayPutElement(psafeReplaceArray, &index, &vresult); VARIANT vsearchDesc[1]; vsearchDesc[0].vt = VT_VARIANT | VT_ARRAY; vsearchDesc[0].parray = psafeReplaceArray; //XReplace-Interface aufrufen if (FAILED(RSCom::Invoke(m_ooDoc, DISPATCH_METHOD, &vresult, NULL, NULL, OLESTR("replaceAll"), TEXT("v"), vsearchDesc[0]))) { return false; }Vielen Dank schon mal für eure Hilfe.
Gruß,
Tobias