Zum Inhalt springen

Erstellung Word Add In für Schriftart


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich möchte ein Word Add In erstellen, welches beim Starten von Word eine bestimmte die Schriftart festlegt.Dazu habe ich ein Word Vorlage 2010 gewählt. Hab bis jetzt folgenden QuellText geschrieben. Und bekomme immer die Fehler Meldung "Befehl kann nicht ausgeführt werden, da kein Dokument geöffnet ist. Bin für jeden Ratschälg Dankbar

vielen Dank

Quelltext:

Private Sub ThisAddIn_Startup() Handles Application.DocumentOpen

Dim Word As New Word.Application

Word = Word.ActiveDocument

Word.Selection.Font.Name = "Schrifart"

End Sub

Geschrieben

Hi,

Du musst ein Word Document erzeugen und es der Anwendung übergeben...


//OBJECT OF MISSING "NULL VALUE"

Object oMissing = System.Reflection.Missing.Value();


//OBJECTS OF FALSE AND TRUE

Object oTrue = true;

Object oFalse = false;


//CREATING OBJECTS OF WORD AND DOCUMENT

Word.Application oWord = new Word.Application();

[B]Word.Document oWordDoc = new Word.Document();[/B] 


//MAKING THE APPLICATION VISIBLE

oWord.Visible = true;    


//ADDING A NEW DOCUMENT TO THE APPLICATION

[B]oWordDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);[/B]


...und dann solltest Du die Schriftart ändern können...

oWord.Selection.Font.Name = "Schriftart"

Gruß Ron

Geschrieben (bearbeitet)

Hi,

hast Du ein Verweis in Deinem Projekt auf Microsoft.Office.Interop.Word?

Folgender Code funktioniert bei mir:


//OBJECT OF MISSING "NULL VALUE"

            Object oMissing = System.Reflection.Missing.Value;


           //OBJECTS OF FALSE AND TRUE

            Object oTrue = true;

            Object oFalse = false;


            //CREATING OBJECTS OF WORD AND DOCUMENT

            Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();

            Microsoft.Office.Interop.Word.Document oWordDoc = new Microsoft.Office.Interop.Word.Document(); 


            //MAKING THE APPLICATION VISIBLE

            oWord.Visible = true;    


            //ADDING A NEW DOCUMENT TO THE APPLICATION

            oWordDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);



            oWord.Selection.Font.Name = "Arial";

PS: Du entwickelst in VB, der Beispielcode ist C#, müsstest Du natürlich umstellen...

Gruß Ron

Bearbeitet von ronaldus
Geschrieben

Hi,

es scheint, als ob das StartUp-Event bei Neuanlage eines Dokumentes immer wieder abgefeuert wird, Deine Prozedur Private Sub ThisAddIn_Startup() Handles Application.DocumentOpen immer wieder aufgerufen wird...

....Startup Event

The Startup event is raised for each of the host items (document, workbook or worksheet) after the document is running and all the initialization code in the assembly has been run. It is the last thing to run in the constructor of the class that your code is ....

Vielleicht kann man einen Trick anwenden..


....

if (oWord.Documents.Count == 0)

   {

     //ADDING A NEW DOCUMENT TO THE APPLICATION

     oWordDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);

     oWord.Selection.Font.Name = "Arial";  

   }


Gruß Ron

Geschrieben

Danke für deine Idee

aber leider funktioniert dieser Trick auch nicht.

Hast du vielleicht noch einen Trick den ich ausprobieren kann :confused:

ich bin namlich mit meinem Latein am Ende

Gruß tore1209

Geschrieben (bearbeitet)

Hi,

mit dem Methoden-Zusatz

Private Sub ThisAddIn_Startup() Handles Application.DocumentOpen

registrierst Du ein Event, das abgefeuert wird, wenn das Dokument hinzugefügt wird.

In dem Code entsteht scheinbar eine Endlos-Schleife, weil der Event bei jedem Aufruf der Methode erneut abgefeuert wird...bevor es in die Dokument-Liste hinzugefügt wird...

Du solltest einen anderen Event registrieren...

Private Sub ThisAddIn_Startup() Handles Me.Startup

damit sollte der Event nur einmal abgefeuert werden...

Ich kann das leider nicht ausprobieren...aber es sollte klappen.

PS: Oder das Handles... einfach weglassen, man braucht doch eigentlich gar kein Event, oder?

Gruß Ron

Bearbeitet von ronaldus
Geschrieben

Nein das wars es auch nicht jetzt bekomme ich zwar keine Endlosschleife mehr,aber auch die schriftart ändert sich nicht.

Und mit me.startup bekomme ich auch wieder eine endlosschleife

Funktioniert meine IDEE überhaupt ?

tore1209

Geschrieben

Ich kann dir nicht wirklich was zu deinem Problem sagen. Nur ist in deinem Quellcode ein Fehler.

Bei Schriftart hast du das t vergessen.

Private Sub ThisAddIn_Startup() Handles Application.DocumentOpen

Dim Word As New Word.Application

Word = Word.ActiveDocument

Word.Selection.Font.Name = "Schrifart"

End Sub

Geschrieben

Hi,

das ist doch wirklich kniffelig....

Versuch mal...



bool init = false;


Private Sub ThisAddIn_Startup() Handles Me.Startup


if(!init)

{

   //OBJECTS OF FALSE AND TRUE

   Object oTrue = true;

   Object oFalse = false;


    //CREATING OBJECTS OF WORD AND DOCUMENT

    Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();

     Microsoft.Office.Interop.Word.Document oWordDoc = new Microsoft.Office.Interop.Word.Document(); 


      //MAKING THE APPLICATION VISIBLE

       oWord.Visible = true;    


       //ADDING A NEW DOCUMENT TO THE APPLICATION

       oWordDoc = oWord.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);



       oWord.Selection.Font.Name = "Arial";


       init = true;


}


End Sub

Gruß Ron

Geschrieben

Super Idee mit dem schalter, aber leiter funktioniert das auch nicht

Ich denke mal das funktioniert nicht da Word jedes mal den Code neue einliest und somit das init nicht auf true bzw. false gestellt.

tore1209

Geschrieben

der Aktuelle Quellcode sieht so aus und erzeugt leider immer noch eine Endlosschleife.

Bin für Jede Idee dankbar.

Dim init As Boolean = False

Private Sub ThisAddIn_Startup() Handles Me.Startup

If init = False Then

'OBJECT OF MISSING "NULL VALUE"

Dim oMissing As Object = System.Reflection.Missing.Value

'OBJECTS OF FALSE AND TRUE

Dim oTrue As Object = True

Dim oFalse As Object = False

Dim Oword As Object

Dim oWordDoc As Object

'CREATING OBJECTS OF WORD AND DOCUMENT

Oword = New Microsoft.Office.Interop.Word.Application()

oWordDoc = New Microsoft.Office.Interop.Word.Document()

'MAKING THE APPLICATION VISIBLE

Oword.Visible = True

'ADDING A NEW DOCUMENT TO THE APPLICATION

oWordDoc = Oword.Documents.Add(oMissing)

Oword.Selection.Font.Name = "Arial"

init = True

End If

Geschrieben

Hi,

habe etwas in der msdn gefunden...

Es scheint so, als ob man gar keine neue Word Application starten muss...


Private document1 As Word.Document = Nothing


Private Sub ThisAddIn_Startup() Handles Me.Startup

SetzeFont()

End If 


Private Sub SetzeFont()

document1 = Me.Application.Documents.Add()

document1.Selection.Font.Name = "Arial"

End Sub

Hier der Link:

Extending Word Documents and Excel Workbooks in Application-Level Add-ins at Run Time

Jetzt muss es doch hoffentlich mal klappen...

Gruß Ron

Geschrieben

Guten Morgen Ron,

heute morgen ist ein guter Morgen, du wirs nicht glauben,aber es hat funktioniert, bis auf eine kleinigkeit es öffnet sich nicht ein Dokument sondern es öffnen sich zwei.

Vielen Dank Ron du bist echt klasse!

Mein Quelltext sieht so aus:

'Imports Microsoft.Office.Interop.Word

Public Class ThisAddIn

'### Aktuelle Dokument wird entladen ###

Private document1 As Word.Document = Nothing

Private Sub ThisAddIn_Startup() Handles Me.Startup

SetzeFont()

End Sub

Private Sub SetzeFont()

'### Der Variablen document1 wird ein neue Dokument zugewiesen ###

document1 = Me.Application.Documents.Add()

'### In der Anwendung (Application) wird die Schriftart ###

'### markiert (Selection) und bekommt die neue Schriftart (Font.Name) zugewiesen ###

document1.Application.Selection.Font.Name = "Arial"

End Sub

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...