Microsoft Word Text

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von xtts02.

    Microsoft Word Text

    Guten Abend,

    ich habe ein kleines Problem.

    Und zwar:

    Ich wollte so eben versuchen den Text einer bereits vorhandene Vorlage von Word zu ändern.
    Ich habe dieses Beispiel von Microsoft ausprobiert. ( support.microsoft.com/kb/316383/de )
    Project im Anhang
    Leider Bekomme ich folgende Fehlermeldung:



    System.Runtime.InteropServices.COMException wurde nicht behandelt.
    ErrorCode=-2146822347
    HelpLink=C:\Program Files (x86)\Microsoft Office\Office12\1031\WDMAIN11.CHM#25421
    HResult=-2146822347
    Message=Das angeforderte Element ist nicht in der Sammlung vorhanden.
    Source=Microsoft Word
    StackTrace:
    bei Microsoft.Office.Interop.Word.Bookmarks.get_Item(Object& Index)
    bei WindowsApplication1.Text.Button1_Click(Object sender, EventArgs e) in C:\Users\Tobias\Desktop\BRK EL\Einsatzleitung\Einsatzleitssoftware\Text.vb:Zeile 23.
    bei System.Windows.Forms.Control.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnClick(EventArgs e)
    bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    bei System.Windows.Forms.Control.WndProc(Message& m)
    bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
    bei System.Windows.Forms.Button.WndProc(Message& m)
    bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    bei System.Windows.Forms.Application.Run(ApplicationContext context)
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    bei Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    bei WindowsApplication1.My.MyApplication.Main(String[] Args) in 17d14f5c-a337-4978-8281-53493378c1071.vb:Zeile 81.
    bei System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
    bei System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
    bei Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    bei System.Threading.ThreadHelper.ThreadStart_Context(Object state)
    bei System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
    bei System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    bei System.Threading.ThreadHelper.ThreadStart()
    InnerException:






    Leider Komme ich nicht Weiter...

    Bitte um Hilfe


    Danke schon einmal im voraus für die Hilfe.


    Herzlichen Dank Tobias
    Bilder
    • dfg.PNG

      6,66 kB, 547×106, 198 mal angesehen
    Dateien
    • ´Word.rar

      (92,06 kB, 181 mal heruntergeladen, zuletzt: )
    Bitte lies mal das hier:
    Tipps für eine höhere Antwort-Quote

    Anhängen von Projektmappen unbedingt vermeiden und stattdessen den relevaten Code posten!
    Kennst du deine IDE? Wenn nein, dann beschäftige dich mal mit den grundsätzlichen Funktionen von Visual Studio!
    Es gibt eine IDE. Sie heißt Visual Studio und zeigt dir direkt die Fehlerzeile.
    Es gibt einen Debugger.

    Ein bisschen Eigeninitiative wär nicht schlecht.
    Leider funktioniert bei mir das mit dem Code hier hinein stellen nicht so richtig.

    Ich bitte um Verzeihung.

    Debuggen und Fehlersuche hab ich schon gemacht.

    Sonst hät ich mich ja hier nicht gemeldet;-)

    aber danke für die sschnelle Antwort

    Tobi112112112 schrieb:

    Leider funktioniert bei mir das mit dem Code hier hinein stellen nicht so richtig.

    So leicht kommst du mir nicht davon ;)
    Es ist schon wichtig, dass man das mit dem Code posten + formatieren beherrscht. Für den Moment scheint es für dich vielleicht ein wichtigeres Problem zu geben (deine Exception), aber das mit der Code-Formatierung solltest du schon mal anpacken. Kannst ja auch Fragen, wenns dazu Probleme gibt.




    Tobi112112112 schrieb:

    Debuggen und Fehlersuche hab ich schon gemacht.


    Die Fehlermeldung sagt ja schon einiges:
    Das angeforderte Element ist nicht in der Sammlung vorhanden.
    Scheinbar gibts kein Bookmark mit dem Namen "MyBookmark".

    Vielleicht hast du dich bei dem Namen verschrieben.

    Überprüfe doch mal mit dem Debugger den Inhalt von oDoc.Bookmarks oder lass dir mal alle Bookmarks ausgeben.

    petaod schrieb:

    Es würde mich sehr wundern, wenn überhaupt Bookmarks vorhanden wäre.
    Du erzeugst mit Documents.Add ein leeres Dokument und erwartest, dass dies Bookmarks beinhaltet?


    Ich habe es jetzt abgeändert,aber immer noch der gleiche Fehler.

    VB.NET-Quellcode

    1. oWord = CreateObject("Word.Application")
    2. oWord.Visible = True
    3. oDoc = oWord.Documents.Add("C:\Users\Tobias\Desktop\Dok2.docx")
    4. oDoc.Bookmarks.Item("MyBookmark").Range.Text = "Some Text Here"
    5. oDoc.Bookmarks.Item("MyBookmark").Range.Style = "MyStyle"



    Ich komme leider nicht weiter....

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

    Tobi112112112 schrieb:


    Wie würde den dann Code Lauten.

    Wir können dir leider nicht alles zeigen. Probiere doch mal bitte ein wenig selber.
    Wenn du dann Google durchsucht hast und logisch eine Weile darüber nachgedacht hast, dein Fehler aber immer noch nicht behoben ist helfen wir dir gerne weiter.
    Es existiert ein Interesse an der generellen Rezession der Applikation relativ primitiver Methoden komplimentär zur Favorisierung adäquater komplexer Algorithmen.
    ------------------------------------------------------------------------------------
    Rising Existence - das GTA V-MP Projekt mit Zukunft und Innuvation

    Maik H. schrieb:

    Tobi112112112 schrieb:


    Wie würde den dann Code Lauten.

    Wir können dir leider nicht alles zeigen. Probiere doch mal bitte ein wenig selber.
    Wenn du dann Google durchsucht hast und logisch eine Weile darüber nachgedacht hast, dein Fehler aber immer noch nicht behoben ist helfen wir dir gerne weiter.



    Hallo Danke für die schnelle Antwort

    Leider hab ich das ganze Internet schon durchforstet und nix gefunden das wir weiter helfen kann...

    Sonst hät ich mich hier ja nicht gemeldet ;)

    Tobi112112112 schrieb:

    Leider hab ich das ganze Internet schon durchforstet und nix gefunden das wir weiter helfen kann...

    Ach Tobi - ich weiß nicht recht, was ich davon halten soll :/ .
    Das Web ist doch voll davon! Suchst Du vielleicht falsch? Hast Du es z.B. mit vb.net word automatisierung oder .net word interop versucht?
    Normaler Weise erwarten viele User hier im Forum, dass sich der Fragesteller ein bisschen mehr damit beschäftigt, darum bekommst Du so wenige Antworten.
    Hier bei uns sind sehr sehr viele Leute in der Lage, dieses "Problem" zu lösen - ihnen fehlt aber die Motivation, dies für Dich zu tun.
    Auch wenn Du vielleicht nicht sofort alles an dieser Office Automatisierung verstehst - Probieren geht über Studieren.
    Das, was ich Dir gleich zeigen werde, habe ich in ein paar Minuten herausgefunden und getestet.
    Und obwohl ich zwar viel mit dynamischen Word-Dokumenten zu tun habe, aber niemals Office dafür benutze, sondern eine Fremdkomponente (frag erst gar nicht - nichts für privat).

    Also, das Füllen von Textmarken in einer vorhandenen Word-Datei scheint wirklich sehr einfach zu sein - zumindest hatte ich keine Probleme damit.
    Diese einfache Lösung bekommst Du von mir - mehr aber nicht. Den Rest musst Du Dir bitte selbst erarbeiten.
    Getestet habe ich mit meinem Word 2010. Ob es mit älteren Versionen auch geht? Keine Ahnung..
    Meine Testprojekte sind der Einfachheit halber Konsolenanwendungen (als Anhang dabei).
    Im Release Verzeichnis liegt die Vorlage vorlage.dot - dort sind zwei Textmarken gesetzt, die gefüllt werden sollen.

    Hier die VB.NET Version:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Explicit On
    2. Option Strict On
    3. Imports Microsoft.Office.Interop.Word
    4. Module Module1
    5. Sub Main()
    6. ' Application path
    7. Dim AppPath As String = AppDomain.CurrentDomain.BaseDirectory
    8. ' New invisible word instance
    9. Dim app As New Application()
    10. app.Visible = False
    11. ' Open a doc file
    12. Dim doc As Document = app.Documents.Open(AppPath & "vorlage.dot")
    13. doc.Activate()
    14. ' Fill bookmarks
    15. doc.Bookmarks("Vorname").Range.Text = "Erwin"
    16. doc.Bookmarks("Name").Range.Text = "Müller"
    17. ' Save document
    18. doc.SaveAs(AppPath & "erzeugt.doc")
    19. ' Close document & word
    20. doc.Close()
    21. app.Quit()
    22. Console.Write("Press any key to exit.")
    23. Console.ReadKey()
    24. End Sub
    25. End Module

    Und hier die C# Version:
    Spoiler anzeigen

    C#-Quellcode

    1. using System;
    2. using Microsoft.Office.Interop.Word;
    3. class Program
    4. {
    5. static void Main()
    6. {
    7. // Application path
    8. string AppPath = AppDomain.CurrentDomain.BaseDirectory;
    9. // New invisible word instance
    10. Application app = new Application();
    11. app.Visible = false;
    12. // Open a doc file
    13. Document doc = app.Documents.Open(AppPath + "vorlage.dot");
    14. doc.Activate();
    15. // Fill bookmarks
    16. doc.Bookmarks["Vorname"].Range.Text = "Erwin";
    17. doc.Bookmarks["Name"].Range.Text = "Müller";
    18. // Save document
    19. doc.SaveAs(AppPath + "erzeugt.doc");
    20. // Close document & word
    21. ((_Document)doc).Close();
    22. ((_Application)app).Quit();
    23. Console.Write("Press any key to exit.");
    24. Console.ReadKey();
    25. }
    26. }

    Du siehst, es ist sehr einfach!
    Ob es jetzt 100% "regelkonform" ist? Mhh - finde es heraus :) . Ist nur ein Denkanstoß der funktioniert..
    Bitte auch keine weitere PN mehr, schreib Deine Fragen ins Forum - danke.

    Viele Grüße und viel Spaß beim Tüfteln,
    Bruno
    Dateien
    Hallo

    Danke nochmal für die Antwort
    Fehler gefunden.
    Es lag an der Endung der Datei ich hatte eine .docx Datei und diese wollte er nicht annehmen.


    Ich werde mir die tipps zu herzen nehmen.

    DANKE Spitze
    Und Danke für die Geduld