Word öffnen
-
Hmm, hast du auch die File-Extension eines Word Dokumnets angegeben ?
Also:ShellExecute(NULL, "open", "name_dar_worddatei[b][u].doc[/u][/b]", NULL, NULL, SW_SHOWNORMAL);
???
Gruß
:: NoName ::
-
ich muss doch bloß den Namen der Word Datei angeben, oder den ganzen Pfad
allesdings hab ich beide Varianten schon versucht, oder liegt es daran dass ich eine .DOT Datei hab?
-
Ja, den Pfad zur *.doc Datei musst du schon angeben :
ShellExecute(NULL, "open", "C:\\Test.doc", NULL, NULL, SW_SHOWNORMAL);
Und du sagst trotz des Pfades geht es nicht ???
Gruß
:: NoName ::
-
mmh jetzt geht's, wenn ich die Datei gleich ins C Verzeichnis kopier ohne Ordner klappts, ( vielleicht hab ich mich wo verschrieben)
cool, besten dank
-
Huhu Stgt!
Hast du an die Doppel-\ gedacht?
Ich hab das hier grade ausprobiert, funktioniert einwandfrei.
ShellExecute(NULL, "open", "C:\\Programme\\Office\\Vorlagen\\Briefe & Faxe\\Eleganter Brief.dot", NULL, NULL, SW_SHOWNORMAL);
-
das war der Fehler mit den \
okay, danke euch
-
Hallo Stgt,
get es jetzt??
MFG TaccoGo
-
yup,merci
-
hallo
nun habe ich eine Combobox und wähle einen Eintrag aus. Wenn ich nun auf " Bericht erstellen" klicke ( in meinem Menü) soll eine Word Dokument geöffnet werden.
Das Problem ist jetzt, dass ich immer in den Explorer wo meine sourcen drin stehen, gelange, (selbst wenn ich gleich auf "Bericht erstellen" klicke )Woran liegt das denn?
In meiner OnSelchange Funktion steh unter anderem dies
void Dilog::OnSelchangeCOMBOPruefverfahren() { try { ... ... m_strVorlagendatei = ("C:\\Vorlagen\\%s.DOT", bericht);
und das in meiner
void CMainFrame::OnBerichtBerichterstellen() { // Word Datei öffnen ShellExecute(NULL, "open", m_strVorlagendatei, NULL, NULL, SW_SHOWNORMAL); }
-
Hast Du bei Dir die Dateiendung .DOT mit Word verknüpft ?
-
yup, hab ich
-
hallo
ich möchte den Wert einer Variablen in einer Klasse in einer anderen Klasse benutzen. Was muss ich da machen?
-
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