Document.Open Syntax ?

MFC openGL

Erfahrenes Mitglied
Hallo,

ich möchte mit C# ein Word Ducument öffnen, und dann ein Bild einfügen.
Jedoch bekomme ich die Word Datei nicht geöffnet, immer hat er Fehler mit meiner Öffnen Syntax.

Ich habe das momentan so :

Code:
Word.Application wordapp = new Word.Application();

object path = "TEST.DOC";

object vk_read_only = false;

object vk_visible = true;

object vk_false = false;

object vk_true = true;

object vk_dynamic = 2;

object vk_missing = System.Reflection.Missing.Value;

Word.Document worddoc = wordapp.Documents.Open(ref path, ref vk_missing, ref vk_read_only, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing);

worddoc.Activate();

wordapp.Selection.TypeText("TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEST");

wordapp.Selection.TypeParagraph();

worddoc.Save();

wordapp.Close(ref vk_false, ref vk_missing, ref vk_missing);

Habe den Code von Codeproject.com, aber auch andere Codebeispiele funktionieren nicht :(

Kann mir einer verraten wo ich den Fehler habe ?

Danke

Gruß

MFC OpenGL


PS : Ich habe die using Microsoft.Office; eingebunden, muss aber trotzdem immer noch WORD vor die Befehle schreiben
 
Hat keiner ne Idee wie ich das in C# machen kann, ein Word Document zu öffnen ?

Gerade habe ich gesehen, das ich kein using Microsoft.Office.Interop.Word; habe, er erkennt das Interop nicht. Brauche ich dafür nen bestimmtes SDK oder so ?

HIIIILFE

Gruß

MFC OpenGL


EDIT : Ein SDK gibts nicht, aber eine Interop Sammlung mit DLLs für Office, downloadbar über Microsoft.com

Weiterhin habe ich aber keine Ahnung wieso mein Open nicht geht :( Hat wirklich noch nie jemand mit OFFICE kommunizieren müssen ?
 
Zuletzt bearbeitet:
MFC openGL hat gesagt.:
Hat keiner ne Idee wie ich das in C# machen kann, ein Word Document zu öffnen ?
Sollte sich eigentlich nicht anders wie beim Excel verhalten.
Nur dass das Word halt andere Propertys hat.
In diesem [post=1033256]Post[/post] findest Links zu ExcelThemen die dir veranschaulichen,
wie man eine Officeanwendung via Interop öffnet und wieder ordnungsgemäß schließt.

lg, cosmo
 
Lösung incl einbinden eines Bildes lautet :

Code:
Word.Application wordapp = new Word.Application();
object path = (object) @"F:\TEST.DOC";
object vk_read_only = false;
object vk_visible = false;
object vk_false = false;
object vk_true = true;
object vk_dynamic = 2;
object vk_missing = Type.Missing;
Word.Document worddoc = wordapp.Documents.Open(ref path, ref vk_missing, ref vk_read_only, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing, ref vk_missing);
wordapp.Visible = false;
 
object bLinkToFile = true;
object bSaveWithDoc = true;
object l = 0;
object t = 0;
object w = 150;
object h = 150;
Word.Shape shp = worddoc.Shapes.AddCanvas(370, 20, 150, 150, ref vk_missing);
shp.CanvasItems.AddPicture(@"F:\testlogo2.bmp", ref bLinkToFile, ref bSaveWithDoc, ref l, ref t, ref w, ref h);
int i = wordapp.Documents.Count;
 

worddoc.Save();
wordapp.Documents.Close(ref vk_missing, ref vk_missing, ref vk_missing);
wordapp.Quit(ref vk_missing, ref vk_missing, ref vk_missing);

System.Runtime.InteropServices.Marshal.ReleaseComObject( wordapp );  //auf speziellen Wunsch von Cosmo und Norbert ;)
 
Zuletzt bearbeitet:
Hast an das
C#:
System.Runtime.InteropServices.Marshal.ReleaseComObject( wordapp );
geacht?
Das meint ich mit dem "ordnungsgamäß Schließen". Oder brauchst das bei Word nicht?
Ich frage weil ich mit Word ansich noch nichts gemacht hab. :-(
 
Code:
wordapp.Documents.Close(ref vk_missing, ref vk_missing, ref vk_missing);
wordapp.Quit(ref vk_missing, ref vk_missing, ref vk_missing);

Das macht das eigendlich gut ;)

Weiß nicht was ich noch schließen soll, das Dokument wird geschlossen, und danach Word selbst. Geht wunderbar bei mir. (DLL's einbinden nicht vergessen)
 
Hab ich gemacht, Norbert...

Aber wie schon gesagt, der Code hat bei mir "sicher" funktioniert, auch ohne den Codeteil.

Aber ich habe diese Art des Reporting eh verwerfen müssen, wegen Lizenzgründen.

Evtl liegt das aber auch an den Libery's, welche ich verwendet hab. Der Post dort ist ja schon 1 Jahr alt...

Wissen die Götter, ich zumindest nicht.

Gruß

MFC OpenGL
 
Ja, sage ja auch nicht das es nicht gültig ist, sondern nur das ich das Problem evtl nicht habe weil ich wie gesagt eine "relativ" neue DLL habe.

Wenn du z.B. IPv6 nutzt, kann es ja auch sein das du Fehler in IPv5 nicht mehr hast... Oder nicht ? Wieso kann das hier nicht der Fall sein ?

Ich meine ich zwinge ja keinen den Code zu nutzen, ich sage nur das er bei mir so wie er da steht läuft.
 
Zurück