Bestimmten Datensatz aus Datenbank in Word Serienbrief drucken

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von Angry Onion.

    Bestimmten Datensatz aus Datenbank in Word Serienbrief drucken

    Hallo,

    durch googlen habe ich zwar mehrere Ansätze gefunden, jedoch nichts, was mich irgendwie meinem Problem näher gebracht hätte.

    Ich habe mein VB.net-Programm, welches Daten aus einer Datenbank aufruft. Per Button_Click möchte ich einen Serienbrief für den aktuell ausgewählten Datensatz drucken.

    Dafür habe ich in Word schon einen Serienbrief erstellt und mit der entsprechenden Datenbank verknüpft und unter "D:\serienbrief.docx" gespeichert.

    Mein größtes Problem liegt jetzt darin, wie mein Programm Word sagt, für welchen Datensatz das Dokument gedruckt werden soll.

    Ich hoffe ihr könnt mir hier helfen,
    vielen Dank im Vorraus,

    gruß Yannic :)

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

    Mit folgendem Ansatz habe ich versucht es umzusetzen:

    VB.NET-Quellcode

    1. Private Sub lblPrint_Click(sender As Object, e As EventArgs) Handles lblPrint.Click
    2. Dim WordApp As MSWord.Application
    3. Dim WordDoc As MSWord.Document
    4. Dim SQLSttmnt As String = "Select * From rechner WHERE ID=5360"
    5. WordApp = New MSWord.Application()
    6. WordDoc = WordApp.Documents.Open("D:\Briefs.docx")
    7. WordDoc.MailMerge.MainDocumentType = MSWord.WdMailMergeMainDocType.wdFormLetters
    8. WordDoc.MailMerge.OpenDataSource(Name:="D:\Neurechner.accdb", _
    9. ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
    10. AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
    11. WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
    12. Format:=MSWord.WdOpenFormat.wdOpenFormatAuto, Connection:= _
    13. "" _
    14. , SQLStatement:=SQLSttmnt, SQLStatement1:="", SubType:=MSWord.WdMergeSubType.wdMergeSubTypeAccess)
    15. With WordDoc.MailMerge
    16. .Destination = MSWord.WdMailMergeDestination.wdSendToPrinter
    17. .SuppressBlankLines = True
    18. With .DataSource
    19. .FirstRecord = MSWord.WdMailMergeDefaultRecord.wdDefaultFirstRecord
    20. .LastRecord = MSWord.WdMailMergeDefaultRecord.wdDefaultLastRecord
    21. End With
    22. .Execute(Pause:=False)
    23. End With
    24. WordDoc.Close()
    25. WordApp.Visible = True
    26. End Sub


    Jetzt kommt allerdings immer eine Exception, die sagt "Word konnte die Datenquelle nicht öffnen".
    Habe die Datenquelle schonmal direkt in Word hinzugefügt, und als Makro aufgenommen, und im Makro steht es genauso, außer dass bei 'Connection'
    'Connection:= "Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=D:\Neurechner.accdb;Mode=Read;Extended Properties="""";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=6;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bul" ' steht.

    Wenn ich die Zeile bei vb.net übernehme, kommt eine Messagebox bei Button_Click, in der steht "Fehler bei der ODBC-Treiberanmeldung für Microsoft Access. Kein zulässiger Dateiname."
    auf okay geklickt und es kommt eine neue Messagebox:

    directupload.net/file/d/3593/hpxkh925_png.htm

    Ich bitte um Hilfe.