Textmarken im Worddokument füllen

Jo-Jo

Grünschnabel
Hallo, ich muss zugeben, ich habe den folgenden Code auch nur gefunden und in meine Anwendung kopiert...war vielleicht ein Fehler (ab jetzt ist es auch zu spät)! ;-)

Code:
private void WriteToBookMark(string BookMarkName, string BookMarkText)
        {
            try
            {
                object Dateiname = "U:/Bestellung.doc";
                object neueVorlage = false;
                object DocTyp = 0;
                object sichtbar = true;

                myWordDoc = myWordApp.Documents.Add(ref Dateiname, ref neueVorlage, ref DocTyp, ref sichtbar);

                myWordApp.Visible = true;
                myWordDoc.Activate();

                int bookmark_cnt = myWordDoc.Bookmarks.Count;
                int i;
                for (i = 1; i <= bookmark_cnt; i++)
                {
                    object o = (object)i;
                    if (BookMarkName.ToLower().Trim() == myWordDoc.Bookmarks.Item(ref o).Name.ToLower().Trim())
                    {
                        myWordDoc.Bookmarks.Item(ref o).Select();
                        myWordApp.Selection.TypeText(BookMarkText);
                    }
                }
            }
            catch (Exception ex)
            {
                //String err = ex.Message;
                MessageBox.Show("Keine Dokumentenvorlage vorhanden", "Achtung", MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }
        }

Problem 1: Wenn meine for-Schleife durchlaufen ist, springt der Debugger immer in den catch Teil und zeigt meine MessageBox an - Warum

Problem 2: Wie kann ich mehrere Textmarken füllen lassen? Ich habe es versucht, indem ich die Methode öfters aufrufe, aber da wird dann für jeden Methodenaufruf ein Word-Dokument geöffnet und immer nur eine Textmarke gefüllt.

Ich hoffe Ihr könnt mir helfen?!
DANKE!
 
Hi

zu Prob 1:
Das "Warum" kannst du dir leicht selbst beantworten! Was wird denn für eine Exception geworfen? Was steht drin? ;)

zu Prob 2:
Die Schleife läuft über alle Bookmarks im Dokument und setzt an diese den übergebenen String.
 
Als Fehlermeldung wird Das angeforderte Element ist nicht in der Sammlung vorhanden. ausgegeben.
Hmm, verstehe ich nicht wirklich, da mein Worddokument ja gefunden, geöffnet und zumindet eine Textmarke gefüllt wird!

Genau, in der For-Schleife werden die die Anzahl Textmarken durchlaufen. In meinem Methodenaufruf kann ich aber nur eine Textmarkte (+Text) übergeben. Wie kann ich mehr übergeben

Danke!
 
Zurück