Office: Adressdatenbank - über Formular ein Word-Dokument erstellen

Helfe beim Thema Adressdatenbank - über Formular ein Word-Dokument erstellen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo Zusammen, ich benötige eure Unterstützung. Ich habe in Access eine Adressdatenbank aufgebaut. Grundsätzlich möchte ich Word-Dokumente... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von joscha_h, 26. April 2012.

  1. joscha_h Erfahrener User

    Adressdatenbank - über Formular ein Word-Dokument erstellen


    Hallo Zusammen,

    ich benötige eure Unterstützung.

    Ich habe in Access eine Adressdatenbank aufgebaut.

    Grundsätzlich möchte ich Word-Dokumente (Vorlagen) aus Access öffnen und dabei mit Variablen aus der Datenbank z.B. Anschrift befüllen. Die Auswahl des Datensatzes dessen Felder als Variablen in das Word-Dokument eingefügt werden sollen, soll mit Hilfe eines Formulars (Benutzerfreundlicher als Access) erfolgen.

    Ich kann Afragen und Formulare in Access erstellen und kenne die Kettenbrieffunktion in Word.

    Ich schaffe es gerade jedoch nicht meine Kenntnisse in einen "Bauplan" für mein obiges Vorhaben umzusetzen. Insbesondere mit der Steuerung der Abfrage über ein Formular habe ich gerade Probleme.

    Bitte erklärt mit wie ich die einzelnen Arbeitsschritte zu einem Gesamtwerk zusammenfügen kann über eine Beispiellösung wäre ich natürlich auch dankbar.

    Vielen Dank!

    Grüße

    Joscha
     
    joscha_h, 26. April 2012
    #1
  2. miriki Erfahrener User
    Vielleicht hilft Dir als Ansatz ja das Ding im Anhang.

    Schritte relativ simpel:

    Word-Dokument mit Formular-Feldern erstellen
    Formular-Felder über "Eigenschaften" einen vernünftigen Namen geben

    im Access eine Routine erstellen, die:
    - eine Word-Instanz mit dem Dokument als Vorlage öffnet
    (das machen die SET Zeilen)
    - alle Formular-Felder in einer Schleife durchklötert
    (das ist die FOR n=... Schleife)
    - bekannte Felder mit entsprechenden Werten aus dem aktuellen Datensatz füllt
    (das macht im Beispiel die SELECT CASE Struktur)

    Die Routine wird dann sinnvollerweise aus einem Formular heraus aufgerufen, in dem der an Word zu übertragende Datensatz gerade angezeigt wird. Im Beispiel ist das der "Word"-Button rechts oben im Detail-Bereich des Formulars.

    Gruß, Michael
     
    miriki, 27. April 2012
    #2
  3. joscha_h Erfahrener User
    Hallo,

    genau so etwas habe ich gesucht! Vielen Dank!

    Ich wollte immer zuerst die Serienbrief-Felder verwenden, aber mit Formular-Feldern funktioniert es sehr gut. Gibt es hier einen Unterschied, ob man Formular- oder Serienbrieffelder verwendet?

    Ich habe mir die Funktionen angeschaut und schon ein bißchen damit herumgespielt und komme bisher gut damit zu Recht.

    Wenn ich Laufe der Anpassung noch Fragen auftauchen, würde ich gerne auf dich zurückkommen.

    Noch einmal vielen Dank!

    Joscha
     
    joscha_h, 29. April 2012
    #3
  4. miriki Erfahrener User

    Adressdatenbank - über Formular ein Word-Dokument erstellen

    Zunächst mal zur Frage, die Du per PN gestellt hattest: Das Speichern des Dokuments ist im Prinzip ganz einfach. Mit der Methode .SaveAs kannst Du den Speicherort und Dateinamen angeben. Ich hab mal die Routine hinter dem Button etwas umgebastelt:

    a) die rs("...") hab ich noch zusätzlich mit Trim$() gekapselt, damit "unzulässige Verwendung von Null" verhindert wird.
    b) Die Vorlage ist durch "dotd" (.dot drive), "dotp" (path) und "dotf" (file) in Konstanten definiert.
    c) Das Ergebnis ist durch "docd", "docp" und "docf" in Variablen definiert, die zur Laufzeit gesetzt werden.

    Das ganze sieht dann so aus:
    Code:
    Private Sub btn_Word_Click()
    On Error GoTo Err_btn_Word_Click
    
        Const dotd = "z:"
        Const dotp = "\projektentwicklung\mdb zu doc-form\"
        Const dotf = "mdb zu doc-form.dot"
    
        'Const docd = "c:"
        'Const docp = "\temp\"
        'Const docf = "mdb zu doc-form.doc"
    
        Dim docd As String
        Dim docp As String
        Dim docf As String
    
        Dim wdAnw As Word.Application
        Dim wdDok As Word.Document
        Dim rs As DAO.Recordset
        Dim feld As DAO.Field
        Dim n As Long
        Dim s As String
    
        Set rs = Me.Recordset
    
        Set wdAnw = CreateObject("Word.Application")
        wdAnw.Visible = True
        Set wdDok = wdAnw.Documents.Add(Template:=dotd & dotp & dotf)
    
        For n = 1 To wdDok.FormFields.Count
            s = ""
            Select Case wdDok.FormFields(n).Name
                Case "txtNachname":
                    s = Trim$(rs("PersonNachname") & " ")
                Case "txtVorname":
                    s = Trim$(rs("PersonVorname") & " ")
                Case "txtStrasse":
                    s = Trim$(rs("PersonStrasse") & " ")
                Case "txtPostlz":
                    s = Trim$(rs("PersonPostlz") & " ")
                Case "txtWohnOrt":
                    s = Trim$(rs("PersonWohnort") & " ")
                Case "txtWohnLand":
                    s = Trim$(rs("PersonWohnland") & " ")
                Case "txtGeburtsDatum":
                    s = Trim$(rs("PersonGeburtsdatum") & " ")
                Case "txtGeburtsOrt":
                    s = Trim$(rs("PersonGeburtsort") & " ")
                Case "txtGeburtsLand":
                    s = Trim$(rs("PersonGeburtsland") & " ")
                Case "txtBeruf":
                    s = Trim$(rs("PersonBeruf") & " ")
                Case Else:
                    s = "-----"
            End Select
            If (s <> "") Then
                wdDok.FormFields(n).Result = s
            End If
        Next n
    
        docd = "C:"
        docp = "\Temp\"
        docf = "Mdb zu Doc-Form.doc"
        wdDok.SaveAs docd & docp & docf
    
    Exit_btn_Word_Click:
        Exit Sub
    
    Err_btn_Word_Click:
        MsgBox Err.Description
        Resume Exit_btn_Word_Click
        
    End Sub
    Jetzt wäre nur noch zu klären, wie die Variablen für den Speicherort und Dateinamen gefüllt werden. Die kannst Du jetzt ja aus einem Formular auslesen, per DbLookup aus einer Tabelle ziehen, von anderen Werten des aktuellen rs abhängig generieren, mit Datum erweitern oder was auch immer.

    Die andere Frage, ob Formular- oder Serienbrief-Felder... Hmmm... Muß ich leider passen, da ich mit Serienbriefen schon seit Word 97 eigentlich nicht mehr viel gemacht habe. Und soweit ich das auf die Schnelle sehe, hat sich da wohl auch einiges geändert in der Zeit.

    Aber müssen bei Serienbrief-Feldern nicht immer auch gleich die Datenquellen mit angegeben werden? Dann wäre das ja das KO-Argument, weil Du ja eigentlich gar keine Datenquelle, zumindest nicht für einen Serienbrief, hast.

    In jedem Fall ist das jetzt so kein Serienbrief, sondern ein (automatisch ausgefülltes) Formular. Es wäre sicherlich auch kein Problem, aus Access heraus eine Datenquelle zu erzeugen, die dann einen Serienbrief füttert. Das schien mir aber jetzt erstmal ein wenig zu umfangreich für diesen Zweck.

    Ich würde in dem Fall wahrscheinlich eher versuchen, das Word-Dokument in einem Access-Bericht nachzubilden. Das geht, solange die Vorlage nicht alle Nase lang von anderer Seite geändert wird (Konzern-Vorlagen, corporate design und all das Gedöns).

    Gruß, Michael
     
    miriki, 3. Mai 2012
    #4
  5. joscha_h Erfahrener User
    Hallo Michael,

    danke für deine Hilfe. Das Öffnen der Vorlage und das Ablegen unter einem neuen Pfad klappt sehr gut.

    Bezüglich der Vergabe eines Dateinnamen hast du meine Fähigkeit (leider) etwas überschätzt.

    Ich möchte in dem konkreten Beispiel den Dateinnamen aus dem Feld Nachname und Wohnort zusammensetzen lassen. Kannst du mit hierfür ein Beispiel geben?

    Ist es auch möglich im Formular ein Textfelder zu erstellen, dessen Inhalt als Dateinname verwendet wird?

    Noch einmal Danke für die Unterstützung.

    Viele Grüße

    Joscha
     
    joscha_h, 3. Mai 2012
    #5
  6. miriki Erfahrener User
    Ach, nicht weiter wild... ;-) Da ich aber bislang auch keine Info hatte, wie Du den Dateinamen denn zusammensetzen wolltest, konnte ich da ja auch noch nicht konkreter werden.

    Naja, Du siehst im Code ja die Zeilen:
    Code:
        docd = "C:"
        docp = "\Temp\"
        docf = "Mdb zu Doc-Form.doc"
        wdDok.SaveAs docd & docp & docf
    Dort ist also der Teil, wo Du eigene Angaben unterbringen kannst. Wenn Laufwerk und Pfad konstant sind, kannst Du Dich also auf die 3. Zeile (docf) konzentrieren.

    Die Angaben zu Nachname und Wohnort hast Du ja im aktuellen Datensatz, der über rs("xxx") ja auch schon zum Befüllen der Formularfelder benutzt wurde. Also zapfen wir da doch mal was ab:
    Code:
        docf = _
            Format(Date, "yyyy-mm-dd") & _
            "_" & _
            Trim$(rs("PersonNachname") & " ") & _
            "_" & _
            Trim$(rs("PersonWohnort") & " ") & _
            ".doc"
    Das setzt Dir den Dateinamen z.B. als "2012-05-04_Mustermann_Musterhausen.doc" zusammen.

    Meinst Du damit jetzt das Formular innerhalb von Access oder das Word-Formular? Im Access? Klar, wenn Du ein Textfeld mit dem Namen "Dateiname" auf dem Formular hast:
    Code:
        docf = Trim$(Me!Dateiname.Value & " ")
    Und bei manuellen Eingaben würde ich immer sehr kritisch sein und darauf achten:
    Code:
        If (Right$(docf, 4) <> ".doc") Then
            docf = docf & ".doc"
        End If
    Damit wird wenigstens gewährleistet, daß die Datei immer mit ".doc" endet, auch wenn es im Eingabefeld nicht bereits so eingetippt wurde.

    Gruß, Michael
     
    miriki, 4. Mai 2012
    #6
  7. joscha_h Erfahrener User
    Hallo Michael,

    sorry das ich mich erst jetzt erst melde.

    Auf jeden Fall habe ich mir das jetzt angeschaut und soweit in meine Version eingearbeitet.

    Bisher funktioniert alles sehr gut.

    Danke für deine Unterstützung.

    Viele Grüße

    Joscha
     
    joscha_h, 7. Mai 2012
    #7
  8. Tom1985 Neuer User

    Adressdatenbank - über Formular ein Word-Dokument erstellen

    Hallo zusammen,

    erst mal vielen Dank @ miriki.
    Die Anleitung hier war perfekt um Textfelder aus Access-Frm in Word zu übertragen.

    Wie verhält es sich mit Booleans innerhalb eines Access-Formulars? Wie bekomme ich den Inhalt (true - false) - oder ggf. mit Hilfe eines Zusatz-
    kontrollkästchens a`la :
    =Wenn([Kontrollkästchen]=Ja;"X";"") letztlich in ein Word-Kontrollkästchen?
     
    Tom1985, 4. Februar 2016
    #8
Thema:

Adressdatenbank - über Formular ein Word-Dokument erstellen

Die Seite wird geladen...
  1. Adressdatenbank - über Formular ein Word-Dokument erstellen - Similar Threads - Adressdatenbank Formular Word

  2. Webadresse aus Formular öffnen

    in Microsoft Access Hilfe
    Webadresse aus Formular öffnen: Hallo zusammen, ich bin am verzweifeln. Ich habe in einem Formular ein Feld mit Pfaden zu einer Webadresse mit unterschiedlichen Unterseiten. In meinem Fall ist das https://www.discogs.com...
  3. MS Access Formular: Datensatz duplizieren mit Unterformularen

    in Microsoft Access Hilfe
    MS Access Formular: Datensatz duplizieren mit Unterformularen: Hallo Ihr Lieben, ich bin ziemliche Anfängerin bei MS Access also nehmt es mir nicht übel, wenn ich Dinge falsch bezeichne etc. :) Ausganslage Ich hab ein Hauptformular (1) (Angaben zur...
  4. Formular nur Daten speichern

    in Microsoft Word Hilfe
    Formular nur Daten speichern: Ich versuche aus einem Formular mit Inhaltssteuerelementen ausschließlich die Daten zu speichern. Die Option in "Erweitert" in "Genauigkeit beim Freigeben" habe ich die Option "Formulardaten als...
  5. Schriftart im Formular

    in Microsoft Access Hilfe
    Schriftart im Formular: Hallo, ich habe folgendes Problem. in einem Formular gibt es ein Textfeld, in dem das Schriftformat auf Microsoft YaHei, Größe 10 und Schriftweite Normal eingestellt ist. Wenn ich einen neuen...
  6. Listenfeld im Endlosformular

    in Microsoft Access Hilfe
    Listenfeld im Endlosformular: Hallo in die Runde! Ich stehe gerade furchtbar auf dem Schlauch und hoffe, ihr könnt mir helfen: Problemkind ist eine Art Zimmerverwaltung: - jedes Zimmer hat eine ID und ist einem Objekt...
  7. Ausfüllbares Formular erstellen

    in Microsoft Word Hilfe
    Ausfüllbares Formular erstellen: Hallo, ich versuche mich gerade mit den "Fortgeschritteneren Funktion" von Word vertraut zu machen. Ich habe mal vor zig Jahren ein Formular erstellt, das fand ich sehr praktisch, aber seitdem...
  8. Excel als Adressdatenbank

    in Microsoft Excel Hilfe
    Excel als Adressdatenbank: Folgende Situation: Ich möchte gerne in Excel eine Adressdatenbank aufbauen. Dabei wird es diverse Kategorien geben wie zum Beispiel "Kunden", "Partner, "Lieferanten" etc. Ebenfalls möchte ich die...
  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