Office: Word Formular dynamisch mit Daten aus Access fuellen

Helfe beim Thema Word Formular dynamisch mit Daten aus Access fuellen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Guten Morgen, ich muss gleich vorweg sagen, ich bin ein aboluter Access-Legastheniker und habe leider auch von VBA so gar keine Ahnung. Also bitte... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von juma79, 19. August 2013.

  1. juma79 Neuer User

    Word Formular dynamisch mit Daten aus Access fuellen


    Guten Morgen,

    ich muss gleich vorweg sagen, ich bin ein aboluter Access-Legastheniker und habe leider auch von VBA so gar keine Ahnung.
    Also bitte seid geduldig mit mir ;)

    Ein Kollege hatte die Frage, ob es nicht eine Moeglichkeit gibt, dass er seine World Vordrucke dynamisch ausfuellen kann.
    Sprich: Er gibt zB den Nachnamen in ein Textfeld ein und alle uebrigen Textfelder fuellen sich automatisch mit den dazugehoerenden Daten.

    Ich war so mutig "HIER!"zu schreien, hab mir das aber zuu einfach vorgestellt Word Formular dynamisch mit Daten aus Access fuellen :rolleyes: und nu hab ich den Salat... :)

    Also, ich hab mal ein wenig im Netz recherchiert und bin auf die folgende VBA-Befehlzeile gestossen (hab sie schon auf meine Beduerfnisse angepasst):

    Private Sub Document_Open()
    'Populate soldaten dropdown field.
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim strSQL As String
    Dim strPath As String
    Dim doc As Document
    Set doc = ThisDocument
    strSQL = "SELECT Name FROM Soldaten ORDER BY Name"
    strPath = "G:\CJ6\SCPO Klemme\Soldaten.accdb"
    'Update path to database file.
    Set db = OpenDatabase(strPath)
    Set rst = db.OpenRecordset(strSQL)
    Do While Not rst.EOF
    With doc.FormFields("wfName").DropDown.ListEntries
    .Add Name:=rst(0)
    End With
    rst.MoveNext
    Loop
    Set db = Nothing
    Set rst = Nothing
    End Sub

    Sub FillDependentFields()
    'Fill form fields based on selected soldaten
    'in wfSoldatenDropdown.
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim doc As Document
    Dim strSQL As String
    Dim strPath As String
    Set doc = ThisDocument
    strSQL = "SELECT Vorname, PK FROM Soldaten " _
    & "WHERE Name = '" _
    & doc.FormFields("wfName").Result _
    & "'"
    strPath = "G:\CJ6\SCPO Klemme\Soldaten.accdb"
    Set db = OpenDatabase(strPath)
    Set rst = db.OpenRecordset(strSQL)
    'Ignore Null values from Access data.
    On Error Resume Next
    doc.FormFields("wfVorname").Result = rst(0).Value
    doc.FormFields("wfPK").Result = rst(1).Value
    Set db = Nothing
    Set rst = Nothing

    End Sub
    Private Sub Document_Close()
    'Clear fields.
    Dim doc As Document
    Set doc = ThisDocument
    doc.FormFields("wfName").DropDown.ListEntries.Clear
    doc.FormFields("wfVorname").TextInput.Clear
    doc.FormFields("wfPK").TextInput.Clear
    'Close without saving or prompting.
    ActiveDocument.Saved = True
    Set rst = Nothing
    End Sub

    Wenn ich nun die Datei oeffne, meckert er und gibt mir einen "Runtime Error '3024' could not find file"

    Ich weiss aber nun genau, dass die Datenbank genau dort liegt und ich sie auch oeffnen kann...

    Hat jemand ne Idee?!? Bitte!?! :)

    LG,

    Juma79

    Huch... ist ein bisschen laenger geworden... Sorry :)
     
  2. Exl121150 Erfahrener User
    Hallo,
    Bei Microsoft habe ich folgenden Hinweis dazu gefunden:

    Code:
    Option Explicit
    
    [COLOR=#ff0000]'Ein Verweis auf die korrekte Microsoft Library muss gesetzt sein!!
    '
    '1) im Menü des VBA-Editors > Extras > Verweise...:
    '2a) Für den Zugriff auf *.MDB-Dateien muss man das
    '    Häkchen setzen vor dem Eintrag "Microsoft DAO x.x Object Library"
    '    in der Liste "Verfügbare Verweise"
    [B]'2b) Für den Zugriff auf *.ACCDB-Dateien muss man das
    '    Häkchen setzen vor dem Eintrag "Microsoft Office xx.x Access database engine Object Library"
    '    in der Liste "Verfügbare Verweise"[/B]
    'denn nur dann sind die Methoden, Eigenschaften, Ereignisse dieser Bibliothek verfügbar.[/COLOR]
    Private Sub Document_Open()
     'Populate soldaten dropdown field.
     Dim ws As DAO.Workspace
     Dim db As DAO.Database
     Dim rst As DAO.Recordset
     '
     Dim strSQL As String
     Dim strPath As String
     Dim doc As Word.Document
     '
     Set doc = ThisDocument
     '
     strSQL = "SELECT Name FROM Soldaten ORDER BY Name;"
     strPath = "G:\CJ6\SCPO Klemme\Soldaten.accdb"
     'Update path to database file.
     'Felder innerhalb von "rst" werden mittels "rst!Feldname" angesprochen
     '
     'Damit der "OpenDatabase..." funktioniert, muss die DAO-Bibliothek ins
     'Projekt eingebunden sein. Das geschieht durch Setzen eines Verweises
     '(vgl. Hinweis am Anfang des Moduls).
      Set ws = DBEngine.Workspaces(0)
      Set db = ws.OpenDatabase(strPath, False, False)
      Set rst = db.OpenRecordset(strSQL)
     '
     'Die Schleife mit "do..loop" muss die Liste befüllen,
     'daher ist sie innerhalb des With-Blocks zu platzieren:
     With doc.FormFields("wfName").DropDown.ListEntries
        rst.MoveFirst
        Do While Not rst.EOF
          .Add Name:=rst!Name
          rst.MoveNext
        Loop
     End With
     '
     Set db = Nothing
     Set rst = Nothing
    End Sub
    
    Sub FillDependentFields()
     'Fill form fields based on selected soldaten
     'in wfSoldatenDropdown.
     Dim ws As DAO.Workspace
     Dim db As DAO.Database
     Dim rst As DAO.Recordset
     Dim doc As Word.Document
     Dim strSQL As String
     Dim strPath As String
     '
     Set doc = ThisDocument
     '
     strSQL = "SELECT Vorname, PK FROM Soldaten " _
       & "WHERE Name = '" _
       & doc.FormFields("wfName").Result _
       & "';"
     strPath = "G:\CJ6\SCPO Klemme\Soldaten.accdb"
     '
     Set ws = DBEngine.Workspaces(0)
     Set db = ws.OpenDatabase(strPath)
     Set rst = db.OpenRecordset(strSQL)
     'Ignore Null values from Access data.
     On Error Resume Next
     rst.MoveFirst
     'Die Abfrage mit strSQL liefert in "rst" 1 Satz mit 2 Feldern: 'Vorname', 'PK'
     'Diese Felder werden mittels "rst!Feldname" angesprochen:
     doc.FormFields("wfVorname").Result = rst!Vorname
     doc.FormFields("wfPK").Result = rst!PK
     Set db = Nothing
     Set rst = Nothing
    '
    End Sub
    Private Sub Document_Close()
     'Clear fields.
     Dim doc As Word.Document
     Dim rst As DAO.Recordset  '<--- Deklaration
     '
     Set doc = ThisDocument
     doc.FormFields("wfName").DropDown.ListEntries.Clear
     doc.FormFields("wfVorname").TextInput.Clear
     doc.FormFields("wfPK").TextInput.Clear
     'Close without saving or prompting.
     ActiveDocument.Saved = True
     'Wenn "rst" hier auf Nothing gesetzt werden soll,
     'muss "rst" auch zuerst mit "Dim" in dieser SUB deklariert worden sein!
     '(es sei denn, "rst" wurde auf Modulebene deklariert)
     Set rst = Nothing
     '
    End Sub
    
     
    Zuletzt bearbeitet: 19. August 2013
    Exl121150, 19. August 2013
    #2
  3. juma79 Neuer User
    Hallo Anton,

    erstmal vielen Dank, dass Du Dir die Mühe mit mir machst!

    Ich hab meine Datei mal entsprechend Deiner Hilfe angepasst und siehe da, das Programm meckert nicht mehr.
    Stattdessen öffnet sich ein Fenster (siehe screenshot) mit einer DataSource Abfrage.

    Word Formular dynamisch mit Daten aus Access fuellen screenshot.jpg

    Nun dachte ich, jaha, der will sicher den Pfad zur Datenbank...
    Vermutlich falsch gedacht, oder?
    Denn wenn ich mich zu dem Ordner durchklicke, wo die DB sein sollte ist da leider nix...

    Was genau will er mit der DataSource Abfrage?
    Stell ich mich nur wieder zu doof an?

    LG,

    Mareike
     
  4. Exl121150 Erfahrener User

    Word Formular dynamisch mit Daten aus Access fuellen

    Hallo Mareike,

    falls es Dir aufgefallen ist, ist zwischen Menüband und horizontalem Lineal ein gelber rechteckiger Bereich mit folgenden Inhalt zu sehen:
    Security Warning Macros have been disabled
    Und dann folgt ein Button: Enable Content
    Diesen Button musst Du zuerst anklicken - denn sonst sind die Makros im Word-Dokument deaktiviert und nutzlos.
     
    Zuletzt bearbeitet: 20. August 2013
    Exl121150, 20. August 2013
    #4
  5. juma79 Neuer User
    Sorry, hatte ich vergessen dazuzuschreiben...

    Die Data Source Abfrage erscheint nachdem ich den "Enable Content" Button geklickt habe...
     
  6. Exl121150 Erfahrener User
    Hallo Mareike,

    eine Access-Datenbank-Datei kann ihre Daten
    1) in Tabellen der Datei gespeichert halten und sie dort zur Verfügung stellen;
    2) die Daten aus Verbindungen zu externen Datenquellen beziehen und sie dann zur Verfügung stellen

    Die 2. Möglichkeit dürfte bei Dir der Fall sein. Die Access-Datenbank-Datei "G:\CJ6\SCPO Klemme\Soldaten.accdb" bezieht ihre Daten aus einer Verbindung zu einer externen Datenquelle.
    Dabei gibt es 2 verschiedene Arten von Datenquellen:
    1) Dateidatenquellen (file data sources)
    2) Computerdatenquellen (machine data sources), wobei es hier wieder 2 Unterscheidungen gibt (Benutzerdatenquellen und Systemdatenquellen).

    Das ist auch der Grund, warum Du in dem Dialogfenster ("Select Data Sources") diese 2 Tabulatoren hast. Zu jeder dieser verschiedenen Arten ist ein kleiner Hilfetexthinweis im Dialogfenster enthalten.

    Alle diese verschiedenen Arten laufen schließlich darauf hinaus, dass ein Datenquellennamen ausgewählt werden muss. Welchen dieser Namen Du benötigst, das musst Du selber wissen (oder derjenige, der diese Datenbank erstellt hat). Nach Auswahl dieses Datenquellennamens kann es notwendig sein, noch weitere (Login-)Informationen zur Verfügung zu stellen.

    Auf alle Fälle hat dieser Datenquellenname nichts mit einem Pfad zur Datenquelle zu tun, sondern es sind im Falle
    1) einer Dateidatenquelle die Informationen zur Verbindungaufnahme zwischen externer Datenquelle und Access-Datenbank in dieser Datei enthalten
    2) einer Systemdatenquelle die Informationen zur Verbindungsaufnahme zwischen externer Datenquelle und Access-Datenbank in der Windows-Registry im Unterschlüssel zu HKLM (HKEY_LOCAL_MACHINE\Software\ODBC\...) enthalten
    3) einer Benutzerdatenquelle die Informationen zur Verbindungsaufnahme zwischen externer Datenquelle und Access-Datenbank in der Windows-Registry im Unterschlüssel zu HKCU (HKEY_CURRENT_USER\Software\ODBC\...) enthalten.
     
    Zuletzt bearbeitet: 21. August 2013
    Exl121150, 21. August 2013
    #6
Thema:

Word Formular dynamisch mit Daten aus Access fuellen

Die Seite wird geladen...
  1. Word Formular dynamisch mit Daten aus Access fuellen - Similar Threads - Word Formular dynamisch

  2. Dropdownfeld in Word Formular

    in Microsoft Word Hilfe
    Dropdownfeld in Word Formular: Hallo, ich arbeite an einem Word Formular wo ich einige Dropdownfelder mit Ja/Nein einfügen möchte. Ich will, dass standardmäßig Nein ausgewählt ist und der User zwischen ja und nein wählen...
  3. Freihandabschnitt in Word 365 Formular

    in Microsoft Word Hilfe
    Freihandabschnitt in Word 365 Formular: Hallo Ich habe ein Word 365 Formular erstellt. In dem möchte ich im unteren Abschnitts bewerkstelligen, dass man auf dem Bildschirm unterzeichnen kann. Also habe ich einen 2. fortlaufenden...
  4. Fußzeile anpassen über Datenbank

    in Microsoft Word Hilfe
    Fußzeile anpassen über Datenbank: Moin Moin, ich bin in meiner Firma für die Verwaltung von Word Formularen zuständig. Nun muss ich jedes mal wenn sich die Geschäftsführung ändert alle Formulare anfassen und die Fußzeile...
  5. Erstellen von Formularen, die in Word ausgefüllt oder gedruckt werden können

    in Microsoft Word Tutorials
    Erstellen von Formularen, die in Word ausgefüllt oder gedruckt werden können: Erstellen von Formularen, die in Word ausgefüllt oder gedruckt werden können Word für Microsoft 365 Word für Microsoft 365 für Mac Word 2019 Word 2019 für Mac...
  6. Bild mit VBA von Access in Word Formular einfügen

    in Microsoft Access Hilfe
    Bild mit VBA von Access in Word Formular einfügen: Hallo an alle, dies ist mein erster Eintrag. Ich habe schon einiges an Erfahrung in VBA komme aber hier siet 2 TAgen trotz üblicher Recherche in Google und einigen Foren nicht weiter. Ich nutze...
  7. Dukumente erstellen mit VBA?

    in Microsoft Word Hilfe
    Dukumente erstellen mit VBA?: Moin. Ich bin auf der Suche nach einer Arbeitserleichterung im Job. Folgende Problemstellung: Im Büro (Stadtverwaltung) benutzen wir viele Dokumente gleichen textlichen Inhalts, die aber...
  8. Word/Excel Formulare mit dynamischen Abruf von Daten aus geschlossenen Excel Dateien

    in Microsoft Excel Hilfe
    Word/Excel Formulare mit dynamischen Abruf von Daten aus geschlossenen Excel Dateien: Hallo zusammen, ich hoffe bei euch ist alles gut. Ich möchte verschiedene gesicherte Formulare in denen lediglich bestimmte Felder/Zellen bearbeitet werden können (Word oder Excel, am liebsten...
  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