S
morgen
okay, hier die Lösung für diejenige oder denjenigen, der das auch mal gebrauchen kann
// Bookmark 'Grafik' suchen und entsprechende Grafik zurückgeben
// 1. Zugriff Bookmarks-Collection beschaffen
IDispatchPtr spBookmarks = NULL;
spDispDokument.GetPropertyByName(L"Bookmarks", &vResult);
spBookmarks = vResult.pdispVal;
CComDispatchDriver spDispBookmarks(spBookmarks);
// 2. Zugriff auf die Bookmark 'Grafik' beschaffen
VARIANT vBmName;
vBmName.vt = VT_BSTR;
vBmName.bstrVal = SysAllocString(L"Grafik");
IDispatchPtr spMyBookmark = NULL;
spDispBookmarks.Invoke1(L"Item", &vBmName, &vResult);
spMyBookmark = vResult.pdispVal;
// Freigeben des Strings nicht vergessen:
SysFreeString(vBmName.bstrVal);
CComDispatchDriver spDispMyBookmark(spMyBookmark);
// 3. Range-Objekt abfragen
IDispatchPtr spMyRange = NULL;
spDispMyBookmark.GetPropertyByName(L"Range", &vResult);
spMyRange = vResult.pdispVal;
CComDispatchDriver spDispMyRange(spMyRange);
// 4.InlineShapes-Collection zugreifen
// InlineShapes - Collection beschaffen:
DISPID dispidInlineShapes = 0;
hr = spDispMyRange.GetIDOfName(L"InlineShapes", &dispidInlineShapes);
hr = spDispMyRange.GetProperty(dispidInlineShapes, &vResult);
CComDispatchDriver spDispInlineShapes(vResult.pdispVal);
// 5.Durch den Aufruf der AddPicture - Methode
// wird eine bestehende Grafik eingefügt
// Hier rufen wir nur mit einem einzigen Parameter auf, dem Dateinamen.
VARIANT vFilename;
vFilename.vt = VT_BSTR;
vFilename.bstrVal = SysAllocString(L"Pfad_der_Bilddatei");
hr = spDispInlineShapes.Invoke1(L"AddPicture", &vFilename);
SysFreeString(vFilename.bstrVal);
viel Spaß...