Word öffnen
-
hat sich erledigt....
-
hallo
kann mir jemand sagen , wie ich das Word Dokument öffnen kann
Im Moment läuft das nur im Hintergrund, also ich sehs nicht.
Ich möchte dass das Word DOkument geöffnet wird , wenn ich auf "Bericht erstellen " klicke.
Was muss ich denn da tun ?Danke schon mal
CLSID clsidWordApplication; HRESULT hr = CLSIDFromProgID(L"Word.Application", &clsidWordApplication); // erfolgreichen Aufruf prüfen: _ASSERT(SUCCEEDED(hr)); if (SUCCEEDED(hr)) { IDispatchPtr spIWord = NULL; // Word - Application erzeugen: hr = CoCreateInstance(clsidWordApplication, NULL, CLSCTX_SERVER, IID_IDispatch, (void **) (IDispatch *) &spIWord); // erfolgreichen Aufruf prüfen: _ASSERT(SUCCEEDED(hr)); if (SUCCEEDED(hr) && (spIWord != NULL)) { CComDispatchDriver spDispWord(spIWord); // Jetzt haben wir Zugriff auf die Dispatch - // Schnittstelle der Word - Application. // Damit können wir uns jetzt das "Documents" - Objekt beschaffen: VARIANT vResult; { DISPID dispidDocuments = 0; hr = spDispWord.GetIDOfName(L"Documents", &dispidDocuments); hr = spDispWord.GetProperty(dispidDocuments, &vResult); } CComDispatchDriver spDocuments(vResult.pdispVal); if (SUCCEEDED(hr) && (spDocuments != NULL)) { // Jetzt haben wir auch Zugriff auf die Documents - Collection. if (false) { // Durch den Aufruf der Add - Methode, // ohne Parameter, erzeugen wir ein neues Dokument: hr = spDocuments.Invoke0(L"Add", &vResult); } else { // Durch den Aufruf der Open - Methode // wird ein bestehendes Dokument geöffnet. // Hier rufen wir nur mit einem einzigen Parameter auf, dem Dateinamen. VARIANT vFilename; vFilename.vt = VT_BSTR; vFilename.bstrVal = SysAllocString(L"C:\\Vorlage\\Test.DOT"); hr = spDocuments.Invoke1(L"Open", &vFilename, &vResult); SysFreeString(vFilename.bstrVal); } // Das aktuelle Dokument - Objekt beschaffen: IDispatchPtr spDokument = NULL; { VARIANT vDocNummer; vDocNummer.vt = VT_I4; vDocNummer.lVal = 1; hr = spDocuments.Invoke1(L"Item", &vDocNummer, &vResult); spDokument = vResult.pdispVal; } CComDispatchDriver spDispDokument(spDokument); // "Speichern unter" mit dem aktuellen // Dokument durchführen, Format = "Document" VARIANT vNeuerName, vSpeichernFormat; vNeuerName.vt = VT_BSTR; vNeuerName.bstrVal = SysAllocString(L"C:\\Vorlage\\Test.DOC"); vSpeichernFormat.vt = VT_I4; vSpeichernFormat.lVal = 0; // wdFormatDocument = 0, // wdFormatText = 2, ... hr = spDispDokument.Invoke2(L"SaveAs", &vNeuerName, &vSpeichernFormat, &vResult); SysFreeString(vNeuerName.bstrVal); // Word-Application wieder zumachen: hr = spDispWord.Invoke0(L"Quit", &vResult); } // Alle Interfaces wieder befreien: spIWord = NULL; } } else printf("Es ist kein Word installiert!\n");
-
muss ich das so machen
??? .SetVisible(TRUE);aber was muss anstatt den ??? hin
-
bin über jeden Tipp dankbar
-
Such mal nach nem Beispiel mit FindWindow (du brauchst einen Zeiger auf Word).
Den Rest könnte SetWindowPos oder SetFocus erledigen - musste mal suchen.
-
okay, mach ich
mmh, in einem anderen Versuch hat das mit SetVisible funktioniert, aber auch nur weil die das so gemacht haben
_Application objWord;
.....
objWord.SetVisible(TRUE); //This shows the application.also kann ich das jetzt nocht so machen, oder? Schade...
-
Wenn du das gefunden hast, hast du es auch mal probiert?
Ich hab schon mal gesagt: Ich habe nur Vorschläge - keine Musterlösungen!
-
hallo
okay, hab's gefunden. Ich muss da einfügen
{ // WORD SICHTBAR MACHEN DISPID dispidVisible = 0; vParam.vt = VT_BOOL; vParam.boolVal = VARIANT_TRUE; hr = spDispWord.GetIDOfName(L"Visible", &dispidVisible); hr = spDispWord.PutProperty(dispidVisible, &vParam); }
aber jetzt bekomme ich, wenn ich in die folgende Zeile reinstepp eine Exception
CComDispatchDriver spDocuments(vResult.pdispVal);dann komm ich da rein
CComDispatchDriver(IDispatch* lp) { if ((p = lp) != NULL) p->AddRef(); }
und in der Zeile p->AddRef(); bekomm ich ein Exception
An was liegt das denn, weiß das jemand ?
danke euch
-
hat sich erledigt
-
hallo
kann mir jemand nochmal weiterhelfen, komm einfach nicht weiter
Und zwar wird hier die Word Datei mit Namen test.doc geöffnet
Nun möcht ich aber ansatt dem string "C:\\test.doc");,
diese funktion aufrufen
m_pSteuerung->GetVorlagendatei() (die in einer anderen Klasse sich befindet)
Aber wie macht man dasWenn ichs einfach einsetz, dann komen folgende Fehler, aber ist ja klar, dass es so nicht geht:
SysAllocString' : cannot convert parameter 1 from 'class CString' to 'const unsigned short *'// Durch den Aufruf der Open - Methode // wird ein bestehendes Dokument geöffnet. // Hier rufen wir nur mit einem einzigen Parameter auf, dem Dateinamen. VARIANT vFilename; vFilename.vt = VT_BSTR; vFilename.bstrVal = SysAllocString(L"C:\\test.doc");
danke für eure Hilfe
-
hallo
was muss ich hier machen, bekomme folgende Fehlermeldung:
'L' : undeclared identifier
Versteh das nicht so ganz..VARIANT vFilename; vFilename.vt = VT_BSTR; vFilename.bstrVal = SysAllocString(L(m_pSteuerung->GetVorlagendatei())); hr = spDocuments.Invoke1(L"Open", &vFilename, &vResult); SysFreeString(vFilename.bstrVal);
danke
-
Hast du schon versucht, es einfach wegzulassen?
vFilename.bstrVal = SysAllocString(m_pSteuerung->GetVorlagendatei());
-
yup da bin ich grad
weiß nur nicht wie man konvertiertDie Fehlermeldung lautet:
cannot convert parameter 1 from 'class CString' to 'const unsigned short *'