Probleme mit OLE-Automation unter MFC
-
Hallo,
ich habe ein MFC-Projekt mit Wrapperklassen aus der Type-Library (11.0) geerbt, was zum
Erstellen, Öffnen und zum Speichern von Worddokumenten genutzt wird. Das hat auch funktioniert bis zu Office 2010 (unter XP und Windows 7).
Ich scheitere (auch mit der Microsoft Word 14.0 ObjectLibrary) am SaveAs für docx (für doc geht es auch weiterhin) mit der Fehlermeldung "Dateityp und Dateierweiterung sind nicht kompatibel."
In den von mir genutzen Klassen (Funtionen) gibt es keine Unterschiede zu den Parametern der "alten" TypeLibrary.Mache ich das Dokument nach dem Bearbeiten "visible" und speichere mit Hand,
ist es ein docx.//Anlegen COleVariant vOpt(DISP_E_PARAMNOTFOUND, VT_ERROR); COleVariant vFile("d:\\vorlage.dot"); Documents wordDocs(m_wordApp->get_Documents()); m_wordDocs.Add(vFile, vOpt,vOpt,vOpt); //... //speichern _Document act_doc=myWordApp->get_ActiveDocument(); COleVariant vOpt((long)DISP_E_PARAMNOTFOUND, VT_ERROR); COleVariant vTrue((short)TRUE); COleVariant vFalse((short)FALSE); COleVariant vFile("d:\\test.docx"); COleVariant vFormat((short)0); try{ act_doc.SaveAs( vFile, vFormat, //FileFormat vFalse, //LockComments vOpt, //Password vTrue, //AddToRecentFiles vOpt, //WritePassword vFalse, //ReadOnlyRecommended vFalse, //EmbedTrueTypeFonts vFalse, //SaveNativePictureFormat vFalse, //SaveFormsData vFalse, //SaveAsAOCELetter vOpt, //Encoding, vOpt, //InsertLineBreaks, vOpt, //AllowSubstitutions, vOpt, //LineEnding, vOpt); //AddBiDiMarks } catch(COleDispatchException *pOleDispatchException) { char buf[255]; pOleDispatchException->GetErrorMessage((LPTSTR)buf, 255); //-->hier der Fehler: //... }
Gibt es eine gute Quelle, wo ich was zu den ganzen Parametern nachlesen kann?
Visual Basic hilft mir da nicht wirklich weiter.
Danke!
-
Dein vTrue und vFalse kommen mir komisch vor. Du gibst den Typ nicht an, also sind es per defaultparameter VT_I2 statt VT_BOOL. Außerdem löst TRUE (zumindest bei mir) nach 1 auf, während bei VARIANT_BOOL nur -1 als wahr gilt (siehe auch http://blogs.msdn.com/b/oldnewthing/archive/2004/12/22/329884.aspx).
-
Dein vTrue und vFalse kommen mir komisch vor
Das stammt aus der MSDN für Office 2000.
Edit: Ich habe jetzt zum Test ein C#-Projekt aufgesetzt und dort in der Hilfe die Member für SaveAs gefunden. Fileformat war falsch. Leider ist C# nicht die Lösung für mein Projekt. Aber wenigstens kommt man so an die Parameter.