Funktionsaufruf von Word und Excel aus VB.Net

  • VB.NET
  • .NET (FX) 4.0

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von moffgat.

    Funktionsaufruf von Word und Excel aus VB.Net

    Guten Morgen,

    vor etwa 10 Jahren habe ich in Visual Studio 2005 eine Software geschrieben, die unter anderem Word und Excel (damals 2003) aus dem Programm heraus aufruft und sozusagen fernsteuert. Weil jetzt nach vielen Jahren Änderungen an der Software notwendig sind und weil man VS 2005 beim besten Willen nicht mehr zum Laufen bekommt, bin ich dabei das Programm nach VS 2017 zu migrieren und an die aktuelle Office Version 2016 anzupassen. Den größten Teil hab ich schon erledigt, auch das Aufrufen von Word und Excel über die Microsoft.Office.Interop ist nicht das Problem. Ich bekomme aber bestimmte Funktionsaufrufe einfach nicht übertragen. Genauer gesagt handelt es sich um die folgenden 3 Word Aufrufe an denen ich verzweifele:

    appwd.Selection.PasteAndFormat(Word.WdRecoveryType.wdChart) Einfügen einer Excel-Grafik per Copy-Paste in ein Word-Dokument
    appwd.Selection.ParagraphFormat.TabStops.Add(82, Word.WdTabAlignment.wdAlignTabLeft, Word.WdTabLeader.wdTabLeaderSpaces) Festlegen von Tabstopps in Word
    und
    appwd.Selection.Information(Word.WdInformation.wdFirstCharacterLineNumber) Auslesen der aktuellen Zeilennummer auf der aktuellen Word-Seite

    Das Problem sind nicht die Funktionen sondern die übergebenen Argumente also z.B. Word.WdRecoveryType.wdChart. Erster Lösungsansatz war den Namespace anzupassen und daraus Microsoft.Office.Interop.Word.WdRecoveryType.wdChart zu machen. Dann meckert er aber, dass WdRecoveryType mehrdeutig ist. Ein durchsuchen das Namespaces hat mich auch nicht wirklich weitergebracht. Kann mir einer weiterhelfen, wie ich die Funktion aufrufen muss, damit es passt? Wahrscheinlich ist die Lösung total banal und ich steh hier nur auf dem Schlauch.

    Danke schon im Voraus für eure Hilfe

    Frank
    Ok, ich habe nur Office 2010 momentan zu Verfügung, aber vielleicht reicht es ja:
    1. unschön: In die Word-Makros reingehen, WdRecoveryType.wdChart eintippen und Dir im Kontextmenü die Definition anzeigen lassen, dann kommst Du auf den Zahlwert (bei mir 14)
    2. Wenn ich den Code bei mir eintippe, klappt alles. Namespaces habe ich absichtlich mal rausgelassen:

    VB.NET-Quellcode

    1. Dim appWd As New Microsoft.Office.Interop.Word.Application
    2. appWd.Selection.PasteAndFormat(Microsoft.Office.Interop.Word.WdRecoveryType.wdChart)

    Ergibt mit IntelliSense für wdChart auch 14. Keine Fehlermeldungen oder Unklarheiten.

    EDIT: Ehm, ja. Punkt 2 hattest Du ja schon selber probiert ;( . Kannst Du mal den problembehafteten Code posten, da der Fehler (zumindest für mich) noch nicht nachvollziehbar ist?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Danke dir, dass du dich meiner Sache angenommen hast. Ich hab gerade den Fehler gefunden und ich muss gestehen, es war meine eigene Dämlichkeit. Der Grund war ganz einfach. Ich hab zwar die neuen Interop Verweise in das Projekt importiert, hab natürlich aber vergessen, den alten Verweis auf das Word 2003 Objekt zu entfernen. Entsprechend gab es den Word Namespace zweimal und die Argumente waren nicht eindeutig. Hätte man wirklich schneller drauf kommen können. Wieder 8 Stunden Lebenszeit verschwendet :).

    LG Frank