[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Access-Daten in Word ausgeben

Sprache / Programm: Access ab Version 97 · Word ab Version 97
Beschreibung

Anleitung - So geht's:

  1. Abfrage erstellen, welche alle Inhalte des zukünftigen Textes enthält.

  2. Word-DOT erstellen. In der Vorlage Absätze verteilen und mit Textmarken kennzeichnen. (Name der Textmarke) = (Spaltenname der Abfrage mit den zugehörigen Informationen)

  3. Im VBA-Modul das Menü 'Extras', 'Verweise' auswählen und die

    • Microsoft Office 8.0 Object Library (oder höher)

    • Microsoft Office 8.0 Word Library (oder höher)

      einbinden.

  4. VBA-Prozedur 'InWordSchreiben' aufrufen. Die Parameter:

    • Name der Tabelle / Abfrage mit den Daten für Word

    • Name der Spalte in der Tabelle / Abfrage, welche den Pfad enthält. (Vollständiger Pfad+Name der Ausgabedatei incl. .DOC)

VBA-Quelltext
Public Sub InWordSchreiben(Abfrage As DAO.Recordset, SpalteWordDateiName As String, WordDot As String, Drucken As Boolean)
    Dim Word As Word.Application, WordDoc As Word.Document
    Dim Feld As Field, ZielDatei As String
   
    If Abfrage.RecordCount = 0 Then Exit Sub
    Abfrage.MoveFirst
   
    On Error Resume Next    ' Läuft Word ?
    Set Word = GetObject(, "Word.Application.8")
   
    If Err.Number <> 0 Then    ' Word läuft nicht
        Err.Clear              ' Clear Err Object In Case error occurred.
        Set Word = CreateObject("Word.Application.8")
    Else
        Word.Activate
    End If
   
    Word.Visible = True
    Word.ScreenUpdating = False
    Word.WindowState = wdWindowStateNormal
    Windows.Arrange
    On Error GoTo FehlerInWord
   
   
    Do
        Word.Documents.Add Template:="""" & WordDot & """"
        For Each Feld In Abfrage.Fields
            If UCase(Feld.Name) <> UCase(SpalteWordDateiName) Then
                Word.ActiveDocument.Bookmarks(Feld.Name).Select
                Word.Selection.InsertAfter Nz(Feld.Value)
            End If
        Next Feld
       
        ' Falls Datei schon vorhanden, warnen und Änderungsvorschlag machen
        ZielDatei = Abfrage(SpalteWordDateiName)
        Do Until Dir$(ZielDatei) = vbNullString
            ZielDatei = InputBox("Die Datei existiert bereits. Pfad ändern ?", , ZielDatei)
            If ZielDatei = Abfrage(SpalteWordDateiName) Then Exit Do
            If ZielDatei = vbNullString Then
                MsgBox "Keine Eingabe. Word wird Sie Später auffordern, diese Datei zu speichern"
                Exit Do
            End If
        Loop
       
        Word.ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
        Word.Selection.WholeStory
        Word.Selection.Fields.Update
        Word.ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
        Word.Selection.EndOf Unit:=wdParagraph, Extend:=wdMove
       
        If Drucken Then Word.ActiveDocument.PrintOut True

        If ZielDatei <> "" Then
            Word.ActiveDocument.SaveAs """" & ZielDatei & """"
            Word.ActiveDocument.Close
        End If

        Abfrage.MoveNext
    Loop Until Abfrage.EOF
    Word.ScreenUpdating = True

Ende:
    Word.Quit
Exit Sub

FehlerInWord:
    If Err.Number = 5941 Then
        MsgBox "Falsche WinWordVorlage (Textmarke fehlt)" & _
                vbNewLine & "Vorlage war : " & Dir$(WordDot), _
                vbCritical, "WinWord Abbruch"
    Else
        MsgBox Err.Description, vbCritical, "Fehler bei WinWord-Aufruf"
    End If
    GoTo Ende
End Sub
Argumente der Funktion/Prozedur

Abfrage

Tabelle / Abfrage mit den an Word zu übergebenden Daten.

SpalteWordDateiName

Name der Spalte in der Tabelle / Abfrage, welche den Namen für die Word-Datei enthält.

WordDot

Pfad zur Word-Vorlage (*.DOT, vollständiger Pfad+DateiName)

Drucken

True, wenn das Word-Dokument auf dem Standarddrucker gedruckt werden soll.
Hinweis

Die Spalte mit dem Dateinamen wird nicht an Word übermittelt. Falls trotzdem der Name im Word-Dokument erscheinen soll, in der Abfrage die Spalte mit dem Dateinamen ein zweites Mal unter einem anderen Spaltennamen ausgeben lassen.

Anwendungsgebiete, Fehler und Warnungen

Die Tabelle / Abfrage muß aktualisierbar sein, da die Prozedur den tatsächlich gewählten Namen der Datei zurückspeichert. Damit das Programm läuft, muß in einem beliebigen Modul (Alt+F11) im Menü 'Extras', 'Verweise' die Objektbibliothek 'Microsoft Word 9.0 Object Library' (oder eine andere, aktuelle Version) eingebunden werden. Verwendet die DAO Objektbibliothek. Ab Access 2000 muss diese explizit im VBA-Editor über 'Extras' -> 'Verweise' als 'Microsoft DAO 3.6' (oder höher) eingebunden werden und vor die 'Microsoft ADO 2.1' (oder höher) Bibliothek gesetzt werden.