Microsoft WORD & VB.net

VB2010_ExpressUser

Grünschnabel
Microsoft WORD (Serienbrief, Feldfunktion, Textmarke) & VB.net

Hi Leute!
Ich habe ein Problem und ich komme absolut nicht mehr weiter.
Uns zwar folgendes: Ich habe eine Anwendung gebastelt, dort gibt es dann einen Button.
Wenn ich dann zuvor aus einer Datenbank(MySQL) einen Datensatz auswähle und diesen Button betätige soll er mir quasi eine Serienbrieffunktion ausspucken.
Das heisst er soll oben in einer Word Vorlage die Adresse, Namen usw in eine zuvor angelegte Word Vorlage erstellen.

Habe es soweit hinbekommen das das Dokument geöffnet wird, die Vorlage geladen und kann auch eine Textmarke verändern.

Ich möchte gerne das ganze wie gesagt aus der Datenbank holen.
Hier mal ein Beispiel wie es funktioniert wenn ich das ganze händisch eingebe.

Code:
Function dok(ByVal textmarke As String, ByVal textm_value As String)

        Dim word As New Microsoft.Office.Interop.Word.Application
        Dim doc As Microsoft.Office.Interop.Word.Document
        Try
            word = CreateObject("Word.Application")
            
            doc = word.Documents.Open("d:\\Vorlage3.dot")
            doc.Activate()

            If doc.Range.Bookmarks.Exists(textmarke) Then
                doc.Bookmarks.Item(textmarke).Range.Text = textm_value

            Else
                MessageBox.Show("Textmarke nicht vorhanden!")
            End If

            doc.SaveAs("d:\\test.doc")
            doc.Close()
            MessageBox.Show("Datei erstellt")

        Catch ex As IOException
            MessageBox.Show("Datei nicht vorhanden.")

        Finally
            word.Application.Quit()
        End Try

        Return (0)

    End Function

Das ganze war nur eine kleine Spielerei. Oben steht ja bei der ersten Angabe das ich den Namen der Textmarke angebe und der zweite Punkt das was hinein geschrieben werden soll "textm_value As Atring" das klappt dann auch.
Aber ich möchte ja gerne das er mir die Felder aus der Datenbank dann holt und wenn dann 2 Datensätze markiert sind dass er mir dann 2 Briefe in Word erstellt.

Hoffe jemand hat eine Lösung parat.
Hatte es auch schon über Feldfunktion probiert in Word das habe ich jedoch auch nicht hinbekommen.

Danke Leute
Netten Gruß an alle!
 
Zuletzt bearbeitet:
Hi RudolfG
Danke für deinen Link, also eine Datenverbindung besteht ja schon bereits. Ich bekomme es einfach nicht hin das ich über VB die Feldfunktion oder Textmarken in WORD gefüllt bekomme.
Möchte ja die Daten, z.B. einen Zeitungsnamen oder so ("SELECT name FROM zeitung") in eines der Felder reingeschrieben bekommen.
 
Danke für deinen Link, also eine Datenverbindung besteht ja schon bereits. Ich bekomme es einfach nicht hin das ich über VB die Feldfunktion oder Textmarken in WORD gefüllt bekomme.
Möchte ja die Daten, z.B. einen Zeitungsnamen oder so ("SELECT name FROM zeitung") in eines der Felder reingeschrieben bekommen.

Ok, das konnte ich aber an dem Quelltext nicht sehen.

Du liest die Daten aus der Db (mit select) speicherst die in Variablen zwischen und übergibst, dann die jeweile Textmarke und ausgelesenen Werte an deine "doc()" Funktion.

Aber irgendwie verstehe ich jetzt nicht ganz dein Problem, du kannst Textmarken ersetzen, hast eine Datenbankverbindung... was genau fehlt bzw. an welcher stelle kommst du nicht weiter?

Gruß
RudolfG
 
Ok, das konnte ich aber an dem Quelltext nicht sehen.

Du liest die Daten aus der Db (mit select) speicherst die in Variablen zwischen und übergibst, dann die jeweile Textmarke und ausgelesenen Werte an deine "doc()" Funktion.

Aber irgendwie verstehe ich jetzt nicht ganz dein Problem, du kannst Textmarken ersetzen, hast eine Datenbankverbindung... was genau fehlt bzw. an welcher stelle kommst du nicht weiter?

Gruß
RudolfG

Ich habe das Problem das ich nur eine Textmarke ausgetauscht bekommen habe. Aber auch nur indem ich sie händisch eingetragen hatte.
Hatte probiert sie mit einer SQL Abfrage reinzubekommen.
Was ich nicht hinbekomme:
-Mehrere Textmarken gleichzeitig austauschen anhand selektierter Datensätze aus der Datenbank
Irgendwie weiss ich nicht wie ich das am besten anstellen kann. Da fehlt mir wohl das Wissen zu.

Wahrscheinlich wären ein paar Codebesipiele hilfreich um es besser zu verstehen.
 
Zurück