Text ins Word-Dokument - VB.NET Word AddIn mit RibbonX

4nim4lity

Ensign
Registriert
Nov. 2003
Beiträge
133
Hallo,

ich würde gerne über einen Button in der Word-Oberfläche einen Text ins Word-Dokument eingeben. Leider bin ich zu doof hierfür.
Ich arbeite mit Visual Studio 2022 CE.

Hier der Code


<ribbon>
<tabs>
<tab id="CustomTab" label="My Tab">
<group id="SampleGroup" label="Sample Group">
<button id="Button" label="Insert Company Name" size="large" onAction="ThisDocument.InsertCompanyName" />
<button idMso="StylesPane" />
<labelControl id="label1" getLabel="getLabelInfo"/>
<button id="btn1" label="OnAction-Beispiel" onAction="OnAction" />
<button id="btn2" label="Text schreiben" onAction="OnAction2" />
</group >
</tab>
</ribbon>

Imports Microsoft.Office.Core
Imports Microsoft.Office.Interop.Word

<Runtime.InteropServices.ComVisible(True)>
Public Class Ribbon1
Implements Office.IRibbonExtensibility

Private ribbon As Office.IRibbonUI

Public Sub New()
End Sub

Public Function GetCustomUI(ByVal ribbonID As String) As String Implements Office.IRibbonExtensibility.GetCustomUI
Return GetResourceText("Word_App.Ribbon1.xml")
End Function

#Region "Menübandrückrufe"
'Erstellen Sie hier Rückrufmethoden. Weitere Informationen zum Hinzufügen von Rückrufmethoden finden Sie unter https://go.microsoft.com/fwlink/?LinkID=271226.
Public Sub Ribbon_Load(ByVal ribbonUI As Office.IRibbonUI)
Me.ribbon = ribbonUI
End Sub

Public Function getLabelInfo(ByVal vCtrl As Office.IRibbonControl) As String
Return "Hallo"
End Function


Public Sub OnAction(control As IRibbonControl)
MsgBox(control.Id)
End Sub

Public Sub OnAction2(control As IRibbonControl)
MsgBox("Test")

Dim wa As Microsoft.Office.Interop.Word.Application
Dim wd As Microsoft.Office.Interop.Word.Document
Dim wp As Microsoft.Office.Interop.Word.Paragraph

wa.Selection.Range.Text = "Test" <--- Das soll ins Word-Dokument!!! Geht aber nicht. Fehlermeldung ist hier: System.NullReferenceException: "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt."


End Sub
 
Klingt erstmal, als ob du da auch eine Vorlage nehmen kannst.
 
gelöscht weil nicht zielführend
 
Zuletzt bearbeitet:
Glaub ich fast nicht, dass das der Fix ist. Wär zumindest ungewöhnlich, da sich die VSTO AddIns per startup Routine im Word registrieren. Das weiß von sich selbst das es in Word läuft.
Was es aber nicht weiß, ist sein aktuelles Dokument. Das AddIn schwebt über dem jeweiligen Dokument. Deshalb muss überall, wo mit dem aktiv im Fokus befindlichen Dokument gearbeitet wird, erst dieses referenziert werden. Da VB.net nu seit mindestens 2 Jahren offiziell und inoffiziel schon länger tot ist und ich VB auch nie mochte, kann ich das aber nur für C# zeigen.

C#:
using MsoWord = Microsoft.Office.Interop.Word;
MsoWord.Document document = Globals.ThisAddIn.Application.ActiveDocument;

Alternativ könnte auch Globals.ThisAddIn.Application.Selection funktionieren das du direkt den Cursor bekommst.
Ich hab da grad nix griffbereit aus meinen Projekten wo ich mit Selection oder Range arbeite.
 
Zurück
Oben