Bausteine in Word mit VB ansprechen

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Bausteine in Word mit VB ansprechen

    Neu

    Hallo Leute,

    habe heute mit dem experimentieren in Visual Studio (Windows Forms Anwendung, Visual Basic) begonnen.
    Habe ein wenig Erfahrung auf dem Gebiet VBA, musste aber leider feststellen, dass es sich nicht so stark übertragen lässt wie gehofft.

    Schnell zum Problem:

    Ich will in einem Word-Dokument, gespeicherte Bookmarks einfügen.
    Das Word-Dokument kann ich schon "ansprechen" mir fehlt aber jeglicher Ansatz zum fortfahren.

    So spreche ich es an:

    Quellcode

    1. Dim word As New Microsoft.Office.Interop.Word.Application
    2. Dim doc As Microsoft.Office.Interop.Word.Document
    3. word.Visible = False 'Word sehen zum Test?
    4. doc = word.Application.Documents.Add("C:\Users\HOLISTIC\Desktop\Hallo.docx")
    5. doc.Activate()
    6. TextBox1.Text = word.ActiveDocument.Bookmarks("TM1").Range.Text



    In VBA habe ich folgenden Code benutzt:

    Quellcode

    1. Application.Templates( _"C:\Users\HOLISTIC\AppData\Roaming\Microsoft\Templates\Normal.dotm").
    2. _BuildingBlockEntries("HOLISTIC").Insert Where:=Selection.Range, RichText _:=True



    Ich hoffe die Problemstellung ist klar und vielen Dank für jede Hilfe :)

    *Thread aus WPF Bereich verschoben* ~NoFear23m

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()

    Neu

    VB.NET-Quellcode

    1. Application.Templates( _"C:\Users\HOLISTIC\AppData\Roaming\Microsoft\Templates\Normal.dotm").
    2. _BuildingBlockEntries("HOLISTIC").Insert Where:=Selection.Range, RichText _:=True
    Das glaube ich nicht.
    Mir ist keine Sprache bekannt , die diese eigenartige Syntax mit den _ zuliesse.
    Bitte, wenn du Code postest, diesen korrekt posten

    Neu

    Vollzitat eines Vorposts durch Anredefunktion ersetzt ~VaporiZed

    Hallo @ErfinderDesRades, der Code ist korrekt übernommen worden und stammt aus einem VBA Projekt von mir, kannst du gerne mal testen :)
    Soll aber auch gar nicht Thema sein, sondern die Frage: Wie spreche ich Bookmarks in Word an und füge sie in ein Dokument ein?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Neu

    Ich hab's getestet, nein geht nicht. Vielleicht ist er falsch ins Forum übernommen worden, aber
    in der Zeile Application.Templates( _"C:\Users\HOLISTIC\AppData\Roaming\Microsoft\Templates\Normal.dotm"). kann nach ( kein _ stehen und am Ende der Zeile kein .
    Genauso ist in der nächsten Zeile bei RichText _:=True das _ unzulässig. Getestet in Excel und Word.
    Das Problem, warum es für den einen oder anderen doch eben doch eine Rolle spielt: Unechter/nicht funktionierender Code wird als problematisch angesehen, weil wir dann wissen, dass wir den geposteten Code nicht ernsthaft bewerten können.
    Bilder
    • VBA-Errors.png

      32,74 kB, 852×532, 7 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Häufig von mir verwendete Abkürzungen: CEs = control elements (Labels, Buttons, DGVs, ...) und tDS (typisiertes DataSet)
    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht in den Spekulatiusmodus gehen.

    Neu

    @Trannel3141: Ich kann deinen Code nicht nachstellen.
    Kannst du vlt. ein Beispiel-Dokument zippen und anhängen, wo dein vba-Code drinne ist, und funktioniert?
    Bitte mit Anleitung (für absolute Word-VBA-Noobs), wie man die Funktionalität sichtbar machen kann.
    Und bitte probier dein Beispiel auch selbst aus, und auch das Vorgehen nach deiner eigenen Anleitung. Das erspart uns u.U. so einige nervtötende Nachfrage-Roundtrips.
    Und bitte .Zip, und nicht .7z oder .rar oder wasses sonst noch an komprimierten Formaten gibt (die ich nicht installiert habe).

    DateiAnhang zu machen ist hier erklärt:

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Neu

    Trannel3141 schrieb:

    In VBA habe ich folgenden Code benutzt:
    Application.Templates( _"C:\Users\HOLISTIC\AppData\Roaming\Microsoft\Templates\Normal.dotm").
    _BuildingBlockEntries("HOLISTIC").Insert Where:=Selection.Range, RichText _:=True

    Ich gehe davon aus, dass im eigentlichen Code folgendes steht:

    Visual Basic-Quellcode

    1. Application.Templates( _
    2. "C:\Users\HOLISTIC\AppData\Roaming\Microsoft\Templates\Normal.dotm"). _
    3. BuildingBlockEntries("HOLISTIC").Insert Where:=Selection.Range, RichText _
    4. :=True
    Solche Konstrukte mit Folgezeilen werden gerne vom Makrorekorder verwendet.

    Letztendlich müsste das hier also so veröffentlicht werden:

    Visual Basic-Quellcode

    1. Application.Templates("C:\Users\HOLISTIC\AppData\Roaming\Microsoft\Templates\Normal.dotm").BuildingBlockEntries("HOLISTIC").Insert Where:=Selection.Range, RichText:=True
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Neu

    Hallo an alle!
    Ich habe leider auf dem Rechner keine Beispieldatei ohne privaten Inhalt aber zeichnet mal ein Makro auf und fügt ein Schnellbaustein ein, ihr solltet dann einen ähnlichen Code erhalten.

    Wie aber schon gesagt, der von mir zitierte Code aus VBA soll gar nicht Grundlage meiner Frage sein sondern wie ich eben die Funktion dieses Codes (einfügen von Schnellbausteinen in einem aktiven Dokument) auf eine Windows Forms Anwedung in Visual Basic übertrage.

    Vielen Dank für eure Zeit und Hilfe

    Neu

    Hallo,
    meiner Meinung nach lassen sich VBA Erfahrungen sehr gut nach VB.Net übertragen bzw. umgekehrt. Zunächst aber wie üblich die Referenz zum Word Objekt Modell
    https://docs.microsoft.com/de-de/visualstudio/vsto/word-object-model-overview?view=vs-2019

    Wenn ich das richtig verstanden habe, so funktioniert dein Code aus Post 1 korrekt. Wenn das stimmt, versuche es mal mit

    Quellcode

    1. word.​Application.Templates("C:\Users\HOLISTIC\AppData\Roaming\Microsoft\Templates\Normal.dotm").BuildingBlockEntries("HOLISTIC").Insert Where:=Selection.Range, RichText:=True


    Und was passiert, nachdem du word. getippt hast, springt Intellisense an und zeigt dir diverse Word spezifische Vervollständigungen ? Falls möglich, bitte einen Screenshot posten.

    Neu

    zorroot schrieb:

    word.​Application.Templates("C:\Users\HOLISTIC\AppData\Roaming\Microsoft\Templates\Normal.dotm").BuildingBlockEntries("HOLISTIC").Insert Where:=Selection.Range, RichText:=True
    Die Parameter von Methodenaufrufen müssen bei VB.Net geklammert werden.

    VB.NET-Quellcode

    1. ​Word.Application.Templates("C:\Users\HOLISTIC\AppData\Roaming\Microsoft\Templates\Normal.dotm").BuildingBlockEntries("HOLISTIC").Insert(Where:=Selection.Range, RichText:=True)
    und Selection.Range wird vermutlich durch Word.ActiveDocument.Selection.Range oder ein ähnliches Konstrukt spezifiziert werden müssen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --