Hallo Hendrik!
M. E. wärst Du mit Deiner Frage besser im Access-Forum aufgehoben, aber nichtsdestotrotz hier die Antwort wie ich es machen würde. Es gibt bestimmt viele Wege.
Die Aufteilung der Textblöcke ist eigentlich sinnvoll. Deine sogenannten „schönen“ dicken Textblöcke haben nämlich den unschönen Nachteil, daß sie (wahrscheinlich) in Memo-Feldern gespeichert sind und diese dann, neben einigen anderen Einschränkungen, die Datenzugriffe verlangsamen. Aber egal, zu Deinem Problem unter der Voraussetzung, daß Du nur einen Block hast:
Schreib’ doch einfach, wie Du bereits vorgeschlagen hast die Feldnamen mit einem eindeutigen Bezeichner als Anfang und Ende in den Text hinein z. B. >
Bei Änderung des Datensatzes im Formular änderst Du auch gleichzeitig den (personenbezogen abgespeicherten) Text durch suchen und Ersetzen der entsprechenden Textblöcke (Funktion anhängend). Diesen Textblock übergibst Du dann genau wie jedes andere Feld auch an Word.
Noch ein Tip:
Spare Dir die Übergabe an Word und mache lieber den Ausdruck in Access. Damit hast Du einen haufen Probleme gespart und „nur“ den Nachteil, daß Du nur feldweise formatieren kannst.
Ein weiterer Tip:
Schau’ Dir mal Software zur Zeugniserstellung an (z. B. http://www.zeugnis-profi.de), die liefern gute Ideen für Dein Anwendungsgebiet. Auch hier werden die Texte häppchenweise gespeichert. Der Ausdruck erfolgt per gleichem Programm.
Gruß
Alex
Function TextErsetzen(Optional ZuDurchsuchenderText, Optional SuchenNach, Optional ErsetzenMit) As String
'Entwickelt zum Ersetzen von Textfragmenten durch anderen Text
'HIN:
’ ZuDurchsuchenderText: Der zu durchsuchende Text
’ SuchenNach: Wonach soll gesucht werden?
’ ErsetzenMit: Wodurch soll das gefundene Textfragment ersetzt werden?
’
'RÜCK:
’ Text mit ersetztem Fragment
'HINWEIS: Ersetzt natürlich nur das erste Vorkommen des gesuchten Textes!
'________________________________________________________________________________
If IsMissing(ZuDurchsuchenderText) Or IsNull(ZuDurchsuchenderText) = True Then
TextErsetzen = „“
Exit Function
End If
If IsMissing(SuchenNach) Or IsNull(SuchenNach) = True Then SuchenNach = „“
If IsMissing(ErsetzenMit) Or IsNull(ErsetzenMit) = True Then ErsetzenMit = „“
If InStr(ZuDurchsuchenderText, SuchenNach) > 1 Then
TextErsetzen = left(ZuDurchsuchenderText, InStr(ZuDurchsuchenderText, SuchenNach) - 1) & ErsetzenMit & Right(ZuDurchsuchenderText, Len(ZuDurchsuchenderText) - (InStr(ZuDurchsuchenderText, SuchenNach) + Len(SuchenNach) - 1))
Else
TextErsetzen = ZuDurchsuchenderText
End If
End Function
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]