ich versuche gerade ein Word-Template mit Late Binding zu füllen.
Ein Teil des Template besteht aus einer Tabelle.
Nun möchte ich bestimmte Zellen mit Inhalt füllen.
Wie mach ich das und wie springe ich zu den einzelnen Zellen?
Folgenden Code habe ich bisher dazu geschrieben:
Funktioniert auch soweit ganz gut.
Jetzt hab ich aber noch folgende Fragen:
1.Wie kann ich zu einer Textmarke springen?
2.Hier ist das Beispiel mit einem Bild gemacht, wie heißt den der zugehörige Member für Text?
// Laufende Word-Instanz holen
object word = Marshal.GetActiveObject("Word.Application");
// Metadaten von Word.Application abrufen
Type wordType=word.GetType();
// Dateiname festlegen
string fileName = @"C:\test.bmp";
// Aktuelles Dokument abrufen
object document = wordType.InvokeMember("ActiveDocument", BindingFlags.GetProperty, null, word, new object[0]);
// Absätz-Auflistung des Dokuemnts abrufen
object paragraphs=document.GetType().InvokeMember("Paragraphs",BindingFlags.GetProperty,null,document,new object[0]);
// 2. Absatz des Dokuments abrufen
object secondPara = paragraphs.GetType().InvokeMember("Item", BindingFlags.InvokeMethod, null, paragraphs, new object[1] { 2 });
// Range des Absatzes abrufen
object range = secondPara.GetType().InvokeMember("Range", BindingFlags.GetProperty, null, secondPara, new object[0]);
// Variablen für übrige ref-Parameter erzeugen
object linkToFile = false;
object saveWithDocument = true;
// Bilder-Auflistung des Dokuemnts abrufen
object shapes = document.GetType().InvokeMember("InlineShapes", BindingFlags.GetProperty, null, document, new object[0]);
// Bild zufügen
shapes.GetType().InvokeMember("AddPicture", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, shapes, new object[4] { fileName, linkToFile, saveWithDocument, range });
Danke.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von nasenkalli am .
um zu einer Textmarke zu springen, verwendest Du die Goto-Methode des Document-Objekts. Für den Parameter "What" musst Du -1 (entspricht wdGotoBookmark) angeben und für den Parameter "Name" den Namen der Textmarke.
Text wird in Word hauptsächlich in Absätzen (Paragraphs) verwaltet. Du navigierst einfach zu der Stelle, an die Du Text schreiben möchtest (z.B. zu einer Textmarke) und verwendest dann die TypeText-Methode des Selection-Objekts.
Kennst Du den Marko-Recorder von Word?
Kennst Du die fantastische umfangreiche VBA-Hilfe von Word?
Diese beiden sollten Deine ständigen Begleiter sein, wenn Du Automatisierung über Reflection betreiben willst.
habe deine Antwort erst jetzt gesehen und versuche es umzusetzen.
Werde mich melden wenn es geklappt hat.
Den Makrorecorder hab ich kaum genutzt bisher, genausowenig die VBA-Hilfe
muss ich zu meiner Schande gestehen.
Gruß
nasenkalli
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von nasenkalli am .