Hallo Derek,
ich hatte auch das Problem, vor allen Dingen, fehlte mir dann der „Link“ zum erstellten Worddokument. Also beschloss ich, die Worddatei direkt in Access zu speichern.
Erstelle also ein OLE-Feld mit dem Feldnamen: DOKUMENT
Füge das Feld in dein Formular ein.
Erstelle eine Taste „erstellen“ mit folgendem VBA-Code:
Private Sub erstellen_Click()
Dim NeuesDokument As Word.Document
Dim wrdTextmarken As Word.Bookmarks
Dim conTEMPLATE_NAME
conTEMPLATE_NAME = „Dateipfad zur DOT-Datei“
’ Prozedur beenden, wenn bereits ein Dokument vorhanden ist
If Not IsNull(Me!Dokument) Then
MsgBox "Sie können im aktuellen Datensatz kein neues Dokument erstellen, " & _
„weil bereits ein Dokument vorhanden ist!“, vbCritical + vbOKOnly, „Dokument erstellen“
Exit Sub
End If
With Me!Dokument
.Class = „Word.Document“ ’ Den Klassennamen angeben
.OLETypeAllowed = acOLEEmbedded ’ Den Typ des Objekts angeben
.SourceDoc = conTEMPLATE_NAME ’ Quelldatei im aktuellen Datenbankpfad
.Action = acOLECreateEmbed ’ Das verknüpfte Objekt erstellen
.Verb = acOLEVerbOpen
.Action = acOLEActivate
End With
Set NeuesDokument = Me.Dokument.Object
Set wrdTextmarken = NeuesDokument.Bookmarks
If Len(Nz(Me![Adresse])) > 0 Then If wrdTextmarken.Exists(„Adresse“) Then wrdTextmarken.Item(„Adresse“).Range.Text = Me![Adresse]
If Len(Nz(Me!Datum)) > 0 Then If wrdTextmarken.Exists(„Datum“) Then wrdTextmarken.Item(„Datum“).Range.Text = Me!Datum
If Len(Nz(Me![Ihr_Zeichen])) > 0 Then If wrdTextmarken.Exists(„IZeichen“) Then wrdTextmarken.Item(„iZeichen“).Range.Text = Me![Ihr_Zeichen]
If Len(Nz(Me![KD_NR])) > 0 Then If wrdTextmarken.Exists(„KDNR“) Then wrdTextmarken.Item(„KDNR“).Range.Text = "Kunden-Nr. : " & Me![KD_NR]
If Len(Nz(Me![Unser_Zeichen])) > 0 Then If wrdTextmarken.Exists(„UZeichen“) Then wrdTextmarken.Item(„uZeichen“).Range.Text = Me![Unser_Zeichen]
If Len(Nz(Me!Bezug)) > 0 Then If wrdTextmarken.Exists(„Bezug“) Then wrdTextmarken.Item(„Bezug“).Range.Text = Me!Bezug
If Len(Nz(Me!Betreff)) > 0 Then If wrdTextmarken.Exists(„Betreff“) Then wrdTextmarken.Item(„Betreff“).Range.Text = Me!Betreff
If Len(Nz(Me!Briefanrede)) > 0 Then If wrdTextmarken.Exists(„Briefanrede“) Then wrdTextmarken.Item(„Briefanrede“).Range.Text = Me!Briefanrede
If Len(Nz(Me!Text)) > 0 Then If wrdTextmarken.Exists(„Text“) Then wrdTextmarken.Item(„Text“).Range.Text = Me!Brief_Text
If Len(Nz(Me!Grußformel)) > 0 Then If wrdTextmarken.Exists(„Grußformel“) Then wrdTextmarken.Item(„Grußformel“).Range.Text = Me!Grußformel
If Len(Nz(Me!Absender)) > 0 Then If wrdTextmarken.Exists(„Absender“) Then wrdTextmarken.Item(„Absender“).Range.Text = Me!Absender
If Len(Nz(Me!Anlagen)) > 0 Then If wrdTextmarken.Exists(„Anlagen“) And Me!Anlagen > 0 Then wrdTextmarken.Item(„Anlagen“).Range.Text = "Anlagen : " & CStr(Me!Anlagen)
Set NeuesDokument = Nothing
End Sub
Wenn du also noch die Felder:
Adresse
Datum
Ihr_Zeichen
Unser_Zeichen
usw.
definierst in deinem Formular, werden die entsprechenden Textmarken in der Wordvorlage ausgefüllt.
Schließt man nun das Worddokument, wird es im OLE-Feld gespeichert!
Grüße aus Essen
Wolfgang