Benutzung auf eigene Gefahr ! |
Beschreibung |
Anleitung - So geht's:
|
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 |
|
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. |