tore1209 Geschrieben 13. Oktober 2010 Teilen Geschrieben 13. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ronaldus Geschrieben 19. Oktober 2010 Teilen Geschrieben 19. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tore1209 Geschrieben 20. Oktober 2010 Autor Teilen Geschrieben 20. Oktober 2010 Hallo Ron, vielen Dank für deine Antwort, aber leider funktioniert dein Code nicht. ich bekomme immer Syntax-Fehler angezeigt. Hast du vielleicht noch eine IDEE? tore1209 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ronaldus Geschrieben 20. Oktober 2010 Teilen Geschrieben 20. Oktober 2010 (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 20. Oktober 2010 von ronaldus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tore1209 Geschrieben 20. Oktober 2010 Autor Teilen Geschrieben 20. Oktober 2010 Das Dokument ändert jetzt zwar die Schriftart aber öffnet sich ,dafür immer wieder Warum? Gibt es ein Möglichkeit das zu Unterbinden. Danke Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ronaldus Geschrieben 20. Oktober 2010 Teilen Geschrieben 20. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tore1209 Geschrieben 21. Oktober 2010 Autor Teilen Geschrieben 21. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ronaldus Geschrieben 21. Oktober 2010 Teilen Geschrieben 21. Oktober 2010 (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 21. Oktober 2010 von ronaldus Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tore1209 Geschrieben 21. Oktober 2010 Autor Teilen Geschrieben 21. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
user1234 Geschrieben 21. Oktober 2010 Teilen Geschrieben 21. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ronaldus Geschrieben 21. Oktober 2010 Teilen Geschrieben 21. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tore1209 Geschrieben 21. Oktober 2010 Autor Teilen Geschrieben 21. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tore1209 Geschrieben 21. Oktober 2010 Autor Teilen Geschrieben 21. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ronaldus Geschrieben 21. Oktober 2010 Teilen Geschrieben 21. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
tore1209 Geschrieben 22. Oktober 2010 Autor Teilen Geschrieben 22. Oktober 2010 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.