Laden...

Forenbeiträge von Minski Ingesamt 3 Beiträge

14.03.2012 - 11:14 Uhr

Hallo,

ich arbeite mich gerade in Word Automation ein und bin dank Sebastian.Lange auf NetOffice gestoßen. Das ist auch echt super und einfach.

Nun will ich Schriftvorlagen definieren, also Größe und Schriftart...
Diese sollen dann nur noch bei dem jeweiligen Text aufgerufen werden.
Quasi wie bei Word "Standard", "Überschrift 1", "Überschrift 2"...

(Daraus will ich mir dann auch ein Inhaltsverzeichnis erstellen.)

Aber wie kann ich diese Vorlagen definieren und dann aufrufen. Forumsuche/Google haben nix gebracht.

Wenn ich mit Bookmarks und einem Word-Template arbeite, kann ich ja Sachen vordefinieren, aber dann springt der Text auch immer an die Stelle wo sich das Bookmark im Template befindet. Das will ich aber nicht.

Grüße Christian

13.03.2012 - 16:04 Uhr

Hallo,

Der Wrapper ist Klasse und hat mir auch schon gut geholfen...nur hab ich Probleme mit der SetProperty Funktion.
Und das an zwei Unterschiedlichen stellen : Zugriff auf Header und Font-Size

Mein Code für den Headerzugriff:



//early binding: oWord.ActiveWindow.ActivePane.View.SeekView = Word.WdSeekView.wdSeekCurrentPageHeader;

Object[] objWdSeedCurrentPageHeader = new Object[1];
objWdSeedCurrentPageHeader[0] = 9;

ComObject header= word.GetObjectReturningProperty("ActiveWindow");
header= header.GetObjectReturningProperty("ActivePane");
header= header.GetObjectReturningProperty("View");
// Bis hier läuft es
header.SetProperty("SeekView", objWdSeedCurrentPageHeader);

und der Code für die Schrifgröße:


ComObject Font_Size = selection.GetObjectReturningProperty("Font");
Font_Size.SetProperty("Size", new object[1] { 12 });

Fehler:> Fehlermeldung:

Ein Aufrufziel hat einen Ausnahmefehler verursacht.

Weiß jemand wo der Fehler steckt?
Irgendwie steh ich aufm Schlauch...ist bestimmt nur irgendwas kleines dummes ^^

grüße, Minski

12.03.2012 - 12:01 Uhr

Hallo...ich klinke mich mal in den Thread ein (ist zwar schon alt), habe nämlich genau das gleiche Problem

im early binding läuft es ja so ab:

object Bookmark = (int)Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark;
 oWord.Selection.GoTo(ref Bookmark, ref missing, ref missing, ref NameBookMark);

und im late Binding auch mit der GoTo Methode wie Rainbird schon geschrieben hat, aber da bekomme ich immer Fehler, mein Code:


            Type comType = Type.GetTypeFromProgID("Word.Application");
            object word = Activator.CreateInstance(comType);

            word.GetType().InvokeMember("Visible", BindingFlags.OptionalParamBinding | BindingFlags.SetProperty, null, word, new object[1] { true });

            // Dateiname festlegen
            string template1 = @"C:\\Users\\Template.dot";

            // Aktuelles Dokument abrufen
            object documents = wordType.InvokeMember("Documents", BindingFlags.GetProperty, null, word, new object[0]);

            object document = documents.GetType().InvokeMember("Add", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, documents,  new object[1]  {template1});    

             



// -> hier ist das Problem

             document.GetType().InvokeMember("Goto", BindingFlags.SetProperty | BindingFlags.OptionalParamBinding, null, document, new object[2] { -1, "Title" });
//oder 
//           object oMissing = System.Reflection.Missing.Value;
//           document.GetType().InvokeMember("Goto", BindingFlags.SetProperty | BindingFlags.OptionalParamBinding, null, document, new object[4] { -1,oMissing ,oMissing,  "Title" });
    
// ->


              object selection = wordType.InvokeMember("Selection", BindingFlags.GetProperty | BindingFlags.OptionalParamBinding, null, word, new object[0]);
              selection.GetType().InvokeMember("TypeText", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, selection, new object[1] { "Text hier " });
       

Fehler:

Ein Aufrufziel hat einen Ausnahmefehler verursacht.

Bist du da weiter gekommen Nasenkalli?

grüße, Christian

EDIT:
hab es hin bekommen mit


selection.GetType().InvokeMember("Goto", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, selection, new object[4] { -1, oMissing, oMissing, "Picture" });
selection.GetType().InvokeMember("TypeText", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, selection, new object[1] { "Text hier " });

Dann schreibt er den Text an den richtigen Textmarker