Office: (Office 2003) Serienbrief aus Access heraus starten (Lösung)

Helfe beim Thema Serienbrief aus Access heraus starten (Lösung) in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hi, nachdem ich nunmehr etliche Tage versucht habe das Problem zu lösen, dabei vermutlich jeden existenten Web-Eintrag (hüstel) gelesen und auch... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Gravitar, 2. Dezember 2008.

  1. Serienbrief aus Access heraus starten (Lösung)


    Hi,

    nachdem ich nunmehr etliche Tage versucht habe das Problem zu lösen, dabei vermutlich jeden existenten Web-Eintrag (hüstel) gelesen und auch selbst getestet habe, diese jedoch nicht mit unteschiedlichen Word/Access-Versionen funktionierten, hier nun meine selbst entwickelte Lösung.

    Die (nicht gerade anspruchslose) Anforderung an die Lösung war dabei:
    • Soll mit unterschiedlichen Access und Word-Versionen funktionieren
    • Soll den armen Anwender nicht mit irgendwelchen unverständlichen Dialog-Boxen quälen
    • Soll reproduzierbar auf unterschiedlichen Systemen immer funktionieren und nicht abhängig von der Mondphase, dem Paarungsverhalten tibetanischer Murmeltiere oder sonstigen Variablen sein

    Ziel dieser Lösung:

    Aus Access heraus soll ein Serienbrief-Dokument gestartet werden, dass jeweils die Teilnehmer eines in Access ausgewählten Kurses enthält.

    Kurzbeschreibung der Lösung im Pseudo-Code:
    1. In Access wird eine neue Abfrage unter dem Namen "QryAnschreiben" angelegt.
    2. In Word wird eine Vorlage (*.dot) als Seriendruck-Dokument unter dem Namen "Serien_Anschreiben" angelegt. Die Datenquelle für dieses Dokument ist die Abfrage "QryAnschreiben" aus der Access-Datenbank.
    3. In Access wird eine VBA-Procedure hinterlegt, die bei Aktivierung
      • dynamisch eine neue Abfrage unter dem Namen "QryAnschreiben" generiert,
      • Word öffnet,
      • auf der Basis der Serienbrief-Vorlage ein neues Dokument anlegt
    4. Das neue angelegte Serienbrief-Dokument greift auf die hinterlegte Datenquelle zu und selektiert so die neuen Daten.

    Implementierung:

    zu 1 und 2 brauch man wohl wenig zu schreiben.

    zu 3 die Visual Basic Procedure (liegt bei mir auf einem Button)

    Code:
    Das war es auch schon.

    Erfolgreich getestet habe ich bisher unter Access 2003, 2000 und Word 2003, 2000.

    Sämtliche Varianten mit MailMerge.OpenDataSource sind bereits an diesen beiden Versionen gescheitert.

    Wäre interessant zu erfahren, ob diese Lösungsvariante der altbekannten Anforderung tatsächlich mit unterschiedlichen Access-Versionen, Word-Versionen, OS-Versionen (inkl. Service-Packs) funktioniert.

    Viel Spass beim Seriendruck wünscht

    Andreas

    :)
     
    Gravitar, 2. Dezember 2008
    #1
  2. Hi,

    so nun auch unter Access/WinWord 2002 erfolgreich getestet (mit und ohne Service Pack 3).
     
    Gravitar, 6. Januar 2009
    #2
  3. Hallo Andreas,

    stoße gerade auf Deinen Beitrag, der eigentlich genau das ist, was ich suche. Habe daher Deinen Code vollständig übernommen und nur die SQL-Abfrage geändert. Leider bin ich ein rechter Anfänger und das ganze funktioniert nicht richtig. Der Serienbrief erscheint zwar, wird aber nicht mit den Daten verbunden. Vielleicht liegt der Fehler auch in meiner SQL-Abfrage:

    Dim db As Database
    Dim VarKursNr As Integer
    Dim strSQLAbfrage As String
    Dim objAbfrage As QueryDef
    Dim wrdApp, wrdDoc As Object

    Me.Refresh 'Die Inhalte des aktuellen Formulars abspeichern
    VarKursNr = main 'FrmKursNr 'Die Kursnummer des aktiven Datensatzes aus dem geöffneten Formular als Integer-Wert abspeichern
    Set db = CurrentDb 'Aktuelle Datenbank unter Objekt db abspeichern

    'SQL-String zur Abfrage aller Teilnehmer eines bestimmten Kurses
    strSQLAbfrage = "SELECT [bamf-tn-t].tnname " & _
    "FROM [bamf-tn-t]" & _
    "WHERE [bamf-tn-t].main = [VarKursNr]; "

    db.QueryDefs.Delete "QryNeu" 'On Error Resume Next 'Erst einmal eine evtl. vorhandene "alte" Abfrage löschen
    Set objAbfrage = db.CreateQueryDef("QryNeu", strSQLAbfrage) 'Jetzt die "neue" Abfrage auf Basis des SQL-Strings erzeugen

    Set wrdApp = CreateObject("Word.Application") 'Word starten
    If wrdApp Is Nothing Then
    MsgBox ""
    Exit Sub
    End If
    wrdApp.Visible = True 'jetzt kann man Word auch sehen
    wrdApp.displayAlerts = True ' zeigt Daten an
    Set wrdDoc = wrdApp.Documents.Add("d:\01 Bamf\01 Formulare\Formulare inlingua aktuel\F-011208-TN Register.dot")

    Set db = Nothing
    Set wrdApp = Nothing
    Set wrdDoc = Nothing

    Mein Ziel ist letztlich, in Access einen Datensatz aufzurufen, das Dokument über einen Botton zu öffnen, dadurch die entsprechenden Daten direkt im Brief zuhaben und das ganze dann auszudrucken, also außer Knopfdrücken kein gesucheundgefummel.

    Ich arbeite unter XP mit jeweils 2003.

    Hast du noch einen Tip, an welcher Stelle es hängen könnte?

    Dank und Gruß

    Michael
     
    EngelKing, 19. Juni 2009
    #3
  4. Serienbrief aus Access heraus starten (Lösung)

    Im Beispiel von Gravitar wird der Serienbrief nicht mit den Daten (der Abfrage) verbunden, sondern die Vorlage verwendet bereits die Abfrage als Seriendruckquelle.

    Es wird lediglich die SQL-Anweisung der Abfrage ersetzt und dann auf Basis der Vorlage ein neues Dokument erstellt.
     
    ebs17, 19. Juni 2009
    #4
  5. Hallo Eberhard,
    danke für den Hinweis, das war sehr hilfreich für einen Anfänger.
    Kommt aber sofort das nächste Problem, dass ich bei der Verknüpfung nicht alle Tabellen angeboten bekommen, vor allem fehlt die "QryNeu", die ich zwar unter Access sehe, aber auf die ich bei der Serienbrieferstellung nicht zugreifen kann. Eigentlich komme ich mit Serienbriefen unter Word problemlos klar. Welchen - hoffentlich - einfachen Grund gibt es dafür, dass ich nur einen Teil der Tabellen angeboten bekommen?

    Jetzt schon besten Dank für die Hilfe.

    Gruß
    Michael
     
    EngelKing, 20. Juni 2009
    #5
  6. Nachgefragt: Eine Abfrage musst Du unter Abfragen suchen, nicht unter Tabellen.

    Auch: Siehe Dir mal dieses Thema an: Serienbriefe für Multi-User
    Weg: Tabelle/Abfrage in eine Text- oder aber Exceldatei exportieren und diese Datei als Datenquelle verwenden. Vorteile:
    - läuft stabiler
    - Wordvorlagen können auch ohne DB erstellt werden
     
    ebs17, 20. Juni 2009
    #6
  7. Hallo Andreas,

    ich hoffe ich nerve nicht zu sehr, wenn ich noch eimal zurückfrage:der Serienbrief -Assistent führt mich zu einem Punkt: Vorhandene Liste verwenden..durchsuchen...ich komme dann zu: meine.mdb....und er bietet mir ein Auswahlfenster an, in dem von konkret 10 Auswahllisten, die unter meine.mdb liegen aber im explorer so nicht zu sehen sind, zwei vom Typ view und drei vom Typ Table zur Auswahl an. Einen anderen Weg der Zuweisung kenne ich nicht. Ich weiß also nicht, wie ich Deinem Rat: unter Abfrage suchen folgen kann. Und ich weiß nicht, warum er nicht alle vom Typ view anzeigt, denn dann wäre mein Problem vermutlich gelöst.

    Das andere von Dir vorgeschlagene Thema habe ich zumindest angelesen. Damit komme ich vermutlich nicht weiter, zumal ich gerade auch das hinundherschieben von Daten vermeiden wollte.

    ...noch 'mal schönen Dank und schönen Gruß

    Michael
     
    EngelKing, 20. Juni 2009
    #7
  8. Serienbrief aus Access heraus starten (Lösung)

    Sorry Eberhard,

    Ich meinte Dich und nicht Andreas.....
     
    EngelKing, 20. Juni 2009
    #8
  9. Hallo zusammen,

    stoße als Anfänger immer wieder auf neue Probleme.

    Dank diverser Hilfen funktioniert die Serienbriefsache jetzt irgendwie und sieht so aus:

    Dim db As Database
    Dim VarKursNr As Integer
    Dim strSQLAbfrage As String
    Dim objAbfrage As QueryDef
    Dim wrdApp, wrdDoc As Object
    Dim stDocName As String

    Me.Refresh 'Die Inhalte des aktuellen Formulars abspeichern
    VarKursNr = Me.CurrentRecord 'Die Kursnummer des aktiven Datensatzes aus dem geöffneten Formular als Integer-Wert abspeichern
    Set db = CurrentDb 'Aktuelle Datenbank unter Objekt db abspeichern

    'SQL-String zur Abfrage
    strSQLAbfrage = "SELECT [bamf-tn-t].tnname " & _
    "FROM [bamf-tn-t]" & _
    "WHERE [bamf-tn-t].main = 133; "

    db.QueryDefs.Delete "QryNeu" 'On Error Resume Next 'Erst einmal eine evtl. vorhandene "alte" Abfrage löschen
    Set objAbfrage = db.CreateQueryDef("QryNeu", strSQLAbfrage) 'Jetzt die "neue" Abfrage auf Basis des SQL-Strings erzeugen

    stDocName = "QryNeu" 'später löschen, hilft nur die Abfrage einzusehen
    DoCmd.OpenQuery stDocName, acNormal, acEdit

    Set wrdApp = CreateObject("Word.Application") 'Word starten
    If wrdApp Is Nothing Then
    MsgBox ""
    Exit Sub
    End If
    wrdApp.Visible = True 'jetzt kann man Word auch sehen
    wrdApp.DisplayAlerts = True ' zeigt Daten an
    Set wrdDoc = wrdApp.Documents.Add("\\server\bamf\F-011208-TN Register.dot")

    Set db = Nothing
    Set wrdApp = Nothing
    Set wrdDoc = Nothing

    Was ich nicht gebacken bekommen, ist den zur Zeit noch konstanten Eintrag in der SQL-Abfrage: "133" so zu ändern, dass automatisch der aktuell aufgerufene Datensatz des Formalues angesprochen wird.

    Ich bin für jeden Hinweis dankbar.

    Michael
     
    EngelKing, 20. Juni 2009
    #9
  10. Hallo Michael,

    wenn Du Code-Tags verwendest, wird der Code übersichtlicher und besser lesbar (z.B. Einrückungen werden berücksichtigt). Im Antwortfenster gibt es auch entsprechende Symbolschaltflächen.

    Zur Frage: Wenn der Codeaufruf aus dem Formular mit dem aktuellen Datensatz erfolgt ...
    Code:
     
  11. Hallo Eberhard,

    schönen Dank für die Hinweise und einen ganz großen Dank für den korrekten Code! Es läuft endlich wie gedacht.

    Dank Dir!

    Michael
     
    EngelKing, 21. Juni 2009
    #11
  12. Hallo Leute,

    mein Code ist ähnlich zum oben geposteten:

    Code:
    Kriege aber beim (manuellen) als auch beim maschinellen Verbinden mit MailMerge nachfolgende Fehlermeldungen(siehe auch Grafiken):
    "Datenverknüpfungseigenschaften" und "Fehler bei der ODBC Treiberan-
    meldung".

    Helft mir doch bitte mal.

    Mit besten Grüßen
    Gregor
     
    Gregor0310, 26. November 2010
    #12
  13. Serienbrief aus Access heraus starten (Lösung)

    Hallo Gregor,

    die Fehlermeldung kommt daher, weil das Backend mit einer .mdw-Datei verknüpft&geschützt ist. Ich kenne mich mit dem Zeug nicht aus, weil ich es nicht benutze.

    Aber irgendwer hier kann dir bestimmt sagen, wie das geht ...
     
  14. Hallo Leute,

    habt ihr eine Idee zu meinem Problem?

    Viele Grüße
    Gregor
     
    Gregor0310, 28. November 2010
    #14
  15. Sehr stabil läuft es, wenn man als Serienbriefquelle eine Excel- bzw. Textdatei verwendet und somit die zugrunde liegende Abfrage exportiert.

    Das direkte Verknüpfen mit Accessabfragen ist wohl etwas instabil und zudem über die verschiedenen Wordversionen etwas unterschiedlich und damit fehleranfällig.
     
Thema:

Serienbrief aus Access heraus starten (Lösung)

Die Seite wird geladen...
  1. Serienbrief aus Access heraus starten (Lösung) - Similar Threads - Serienbrief Access starten

  2. Serienbrief, Datum plus 7 Tage

    in Microsoft Word Hilfe
    Serienbrief, Datum plus 7 Tage: Hallo, ich wollte gerne in meinem Serienbrief um eine Rückantwort mit Datum bitten. Die Rückantwort soll 7 Tage nach dem aktuellen Datum erfolgen. Ich habe dazu folgendes gemacht: [ATTACH] Mein...
  3. Über Access VBA ein Worddokument Datenquelle/Serienbrief erstellen

    in Microsoft Access Hilfe
    Über Access VBA ein Worddokument Datenquelle/Serienbrief erstellen: Hallo Leute, ich habe folgendes vor: Die Anwender haben bestimmte Worddokumente grafisch aufbereitet und ich möchte nun über Access dieses Worddokument (welches kein Serienbrief ist, ein ganz...
  4. Serienbrief mit Word aus Access-VBA

    in Microsoft Access Hilfe
    Serienbrief mit Word aus Access-VBA: Hallo, kann mir jemand sagen, wie man aus Access heraus, und zwar aus VBA, Serienbriefe mit Word erzeugt? Das Word-Dokument bzw. eine entsprechende Vorlage kann als gegeben vorausgesetzt werden....
  5. Serienbrief: Access-Datenbank als Datenquelle - Datumsabfrage WENN-DANN-SONST

    in Microsoft Word Hilfe
    Serienbrief: Access-Datenbank als Datenquelle - Datumsabfrage WENN-DANN-SONST: Hallo liebe Gemeinde! Mit der Suche bin ich leider nicht fündig geworden. Bitte um Eure geschätzte Hilfe. Ich verwende Win10(64) und Office Professional+ 2016, alles aktuelle Releases....
  6. Word 365 lässt Datensätze aus Access im Serienbrief "verschwinden"

    in Microsoft Word Hilfe
    Word 365 lässt Datensätze aus Access im Serienbrief "verschwinden": Hallo liebe Profis, ich habe mir in Word 365 einen Etikettenbogen mit 8 Druckfeldern erstellt, die als Adressetiketten dienen sollen. Die Daten dafür ziehe ich mir aus Access. Leider werden in...
  7. Wer hat viel Ahnung von Serienbriefe?

    in Microsoft Outlook Hilfe
    Wer hat viel Ahnung von Serienbriefe?: Hallo :) wir verschicken Serienbriefe mit Word 2007, Access Datenbanken (Betriebssystem Windows 7) und beim programmieren , hängt Outlook immer die 2 Dateien "themedata.thmx" und...
  8. Namensschildchen aus Access als Serienbrief

    in Microsoft Word Hilfe
    Namensschildchen aus Access als Serienbrief: Hallo, ich möchte aus einer Tabelle in Access Namensschildchen erstellen, eine Vorlage der Namensschildchen habe ich bereits da mit Logo etc. (im Word) Nun es passen jeweils 8...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden