<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Word&#x2F;excel automatisieren ohne #import und MFC]]></title><description><![CDATA[<p>Hallo,<br />
ich bin gerade dabei eine Applikation in VC++ zu schreiben, welche über<br />
OLE auf MS Word zugreift.</p>
<p>Ich erstelle über &quot;Word.Application&quot; eine Instance auf MS Word und öffne dort ein Dokument.</p>
<pre><code class="language-cpp">CLSID clsidWordApplication;
HRESULT hr = CLSIDFromProgID(L&quot;Word.Application&quot;, &amp;clsidWordApplication);

IDispatchPtr spIWord = NULL;
// Word - Application erzeugen:
hr = CoCreateInstance(clsidWordApplication, NULL, CLSCTX_SERVER, ID_IDispatch, (void **) (IDispatch *) &amp;spIWord);

//Zugriff auf Datein-Objekt
DISPID dispidDocuments = 0;
hr = m_pDispWord-&gt;GetIDOfName(L&quot;Documents&quot;, &amp;dispidDocuments);
hr = m_pDispWord-&gt;GetProperty(dispidDocuments, &amp;vResult);
CComDispatchDriver spDocuments(vResult.pdispVal);

//Öffnen der Datei
hr = spDocuments.Invoke1(L&quot;Open&quot;, &amp;vFilename, &amp;vResult);
</code></pre>
<p>Nun ist es so das in diesem Word-Dokument auch Excel-Tabellen eingebettet sind.</p>
<p>Ich möchte nun solch eine Tabelle bearbeiten.<br />
Dafür hole ich mir diese Tabell als OLE-Object.</p>
<pre><code class="language-cpp">//OLEFormat
IDispatchPtr spOLEFormat = NULL;
hr = spDispShape.GetPropertyByName(L&quot;OLEFormat&quot;, &amp;vResult);
spOLEFormat = vResult.pdispVal;
CComDispatchDriver spDispOLEFormat(spOLEFormat);

//OLE-Object aktivieren
hr = spDispOLEFormat.Invoke0(L&quot;Activate&quot;, &amp;vResult);

//OLEObject holen
IDispatchPtr spOLEObject = NULL;
hr = spDispOLEFormat.GetPropertyByName(L&quot;Object&quot;, &amp;vResult);
spOLEObject = vResult.pdispVal;
CComDispatchDriver spDispOLEObject(spOLEObject);

//Worksheet holen
IDispatchPtr spActiveSheet = NULL;
hr = spDispOLEObject.GetPropertyByName(L&quot;ActiveSheet&quot;, &amp;vResult);
spActiveSheet = vResult.pdispVal;
CComDispatchDriver spDispActiveSheet(spActiveSheet);
</code></pre>
<p>Nun möchte ich die Werte in den einzelnen Zellen ändern.</p>
<p>Dafür holle ich mir über Range die Zelle.</p>
<pre><code class="language-cpp">DispatchPtr spColumns = NULL;
VARIANT vRangeExcel1, vRangeExcel2;
vRangeExcel1.vt =VT_BSTR;
vRangeExcel1.bstrVal = L&quot;A1&quot;;	
vRangeExcel2.vt =VT_BSTR;
vRangeExcel2.bstrVal = L&quot;A1&quot;;	
hr = spDispActiveSheet.Invoke2(L&quot;Range&quot;, &amp;vRangeExcel1, &amp;vRangeExcel2, &amp;vResult);
</code></pre>
<p>Leider bekomme ich hier aber immer die Meldung<br />
<em>0x80020003 Mitglied nicht gefunden.</em></p>
<p>Kann mir da jemand weiterhelfen bzw. mir sagen wo ich im Netz dazu Hilfe finde (ausser MSDN).</p>
<p>Danke<br />
Friedl</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/69120/word-excel-automatisieren-ohne-import-und-mfc</link><generator>RSS for Node</generator><lastBuildDate>Sat, 02 May 2026 03:37:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/69120.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Mar 2004 14:04:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Word&#x2F;excel automatisieren ohne #import und MFC on Wed, 24 Mar 2004 14:04:18 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich bin gerade dabei eine Applikation in VC++ zu schreiben, welche über<br />
OLE auf MS Word zugreift.</p>
<p>Ich erstelle über &quot;Word.Application&quot; eine Instance auf MS Word und öffne dort ein Dokument.</p>
<pre><code class="language-cpp">CLSID clsidWordApplication;
HRESULT hr = CLSIDFromProgID(L&quot;Word.Application&quot;, &amp;clsidWordApplication);

IDispatchPtr spIWord = NULL;
// Word - Application erzeugen:
hr = CoCreateInstance(clsidWordApplication, NULL, CLSCTX_SERVER, ID_IDispatch, (void **) (IDispatch *) &amp;spIWord);

//Zugriff auf Datein-Objekt
DISPID dispidDocuments = 0;
hr = m_pDispWord-&gt;GetIDOfName(L&quot;Documents&quot;, &amp;dispidDocuments);
hr = m_pDispWord-&gt;GetProperty(dispidDocuments, &amp;vResult);
CComDispatchDriver spDocuments(vResult.pdispVal);

//Öffnen der Datei
hr = spDocuments.Invoke1(L&quot;Open&quot;, &amp;vFilename, &amp;vResult);
</code></pre>
<p>Nun ist es so das in diesem Word-Dokument auch Excel-Tabellen eingebettet sind.</p>
<p>Ich möchte nun solch eine Tabelle bearbeiten.<br />
Dafür hole ich mir diese Tabell als OLE-Object.</p>
<pre><code class="language-cpp">//OLEFormat
IDispatchPtr spOLEFormat = NULL;
hr = spDispShape.GetPropertyByName(L&quot;OLEFormat&quot;, &amp;vResult);
spOLEFormat = vResult.pdispVal;
CComDispatchDriver spDispOLEFormat(spOLEFormat);

//OLE-Object aktivieren
hr = spDispOLEFormat.Invoke0(L&quot;Activate&quot;, &amp;vResult);

//OLEObject holen
IDispatchPtr spOLEObject = NULL;
hr = spDispOLEFormat.GetPropertyByName(L&quot;Object&quot;, &amp;vResult);
spOLEObject = vResult.pdispVal;
CComDispatchDriver spDispOLEObject(spOLEObject);

//Worksheet holen
IDispatchPtr spActiveSheet = NULL;
hr = spDispOLEObject.GetPropertyByName(L&quot;ActiveSheet&quot;, &amp;vResult);
spActiveSheet = vResult.pdispVal;
CComDispatchDriver spDispActiveSheet(spActiveSheet);
</code></pre>
<p>Nun möchte ich die Werte in den einzelnen Zellen ändern.</p>
<p>Dafür holle ich mir über Range die Zelle.</p>
<pre><code class="language-cpp">DispatchPtr spColumns = NULL;
VARIANT vRangeExcel1, vRangeExcel2;
vRangeExcel1.vt =VT_BSTR;
vRangeExcel1.bstrVal = L&quot;A1&quot;;	
vRangeExcel2.vt =VT_BSTR;
vRangeExcel2.bstrVal = L&quot;A1&quot;;	
hr = spDispActiveSheet.Invoke2(L&quot;Range&quot;, &amp;vRangeExcel1, &amp;vRangeExcel2, &amp;vResult);
</code></pre>
<p>Leider bekomme ich hier aber immer die Meldung<br />
<em>0x80020003 Mitglied nicht gefunden.</em></p>
<p>Kann mir da jemand weiterhelfen bzw. mir sagen wo ich im Netz dazu Hilfe finde (ausser MSDN).</p>
<p>Danke<br />
Friedl</p>
]]></description><link>https://www.c-plusplus.net/forum/post/487735</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/487735</guid><dc:creator><![CDATA[wfriedl]]></dc:creator><pubDate>Wed, 24 Mar 2004 14:04:18 GMT</pubDate></item><item><title><![CDATA[Reply to Word&#x2F;excel automatisieren ohne #import und MFC on Wed, 24 Mar 2004 21:33:06 GMT]]></title><description><![CDATA[<p>Hallo Friedl,<br />
könntest du bitte mir deine ganze Quellcode schicken?<br />
<a href="mailto:jefryf@web.de" rel="nofollow">jefryf@web.de</a></p>
<p>Grüße</p>
<p>Jefry</p>
]]></description><link>https://www.c-plusplus.net/forum/post/488181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/488181</guid><dc:creator><![CDATA[jefry]]></dc:creator><pubDate>Wed, 24 Mar 2004 21:33:06 GMT</pubDate></item></channel></rss>