PDA

Vollständige Version anzeigen : Daten aus Access in Word exportieren


Michi
29.04.2001, 18:23
Hallo zusammen!
Folgendes Problem: Ich will die gespeicherte Anschrift in meiner Datenbank auf Knopfdruck von Access aus in meinen Briefkopf (unter Word) einfügen. Also kein Serienbrief, sondern ein einfaches Einzelschreiben.
Wer kann mir helfen?
Vielen Dank im voraus!

Maximilian
29.04.2001, 19:05
Hy Michi,

Zuerst fügst Du in Deiner Word-Vorlage über das Menü "Einfügen" die jeweiligen Textmarken (Anrede, Vorname, Nachname usw) ein. Danach wechselst Du zu Access und gibst über einen Button in deinem Formular folgenden Code ein:

Option Compare Database
Option Explicit
Private Const GotoBookmark = -1

Private Sub cdmAccessToWord_Click()
On Error GoTo ErrWinWord

Dim objWordApp As Object ' Verweis auf Microsoft Word.
Dim Bereich As Object ' Verweis auf Bereich innerhalb des Dokuments (z.B. eine Textmarke)
Dim strVorlage As String

If Not IstWordGestartet Then
DoCmd.Hourglass True
Set objWordApp = CreateObject("Word.Application") ' WinWord starten
DoCmd.Hourglass False
Else
Set objWordApp = GetObject(, "Word.Application") ' WinWord war schon gestartet
End If

objWordApp.Visible = True

' neues Dokument basiert auf Vorlage öffnen
strVorlage = CurDir & "\DeineVorlage.dot"
objWordApp.Documents.Add Template:=strVorlage

' zu Textmarke springen und Anrede einfügen
Set Bereich = objWordApp.ActiveDocument.Goto(What:=GotoBookmark, Name:="Anrede") 'Name:=Bezeichnung Deiner Textmarke im Worddokument
Bereich.InsertAfter Me!Anrede 'Me!... ist die Bezeichnung Deines Textfeldes

' zu Textmarke springen und Vornamen einfügen
Set Bereich = objWordApp.ActiveDocument.Goto(What:=GotoBookmark, Name:="Vorname")
Bereich.InsertAfter Me!Vorname

' zu Textmarke springen und Adresse einfügen
Set Bereich = objWordApp.ActiveDocument.Goto(What:=GotoBookmark, Name:="Adresse")
Bereich.InsertAfter Me!Adresse

' zu Textmarke springen und Ortschaft einfügen
Set Bereich = objWordApp.ActiveDocument.Goto(What:=GotoBookmark, Name:="Ortschaft")
Bereich.InsertAfter Me!Ortschaft

objWordApp.Activate ' WinWord in den Vordergrund bringen

' Verweise auf WinWord-Objekte freigeben.
Set Bereich = Nothing
Set objWordApp = Nothing

ExitWinWord:
Exit Sub

ErrWinWord:
Select Case Err.Number
Case 5101
MsgBox "Die Textmarke wurde in der Vorlage nicht gefunden.", vbCritical
Case 429
MsgBox "Das OLE-Objekt für WinWord konnte nicht erstellt werden.", vbCritical
Case 5137, 5151
MsgBox "Die Vorlage " & strVorlage & " wurde nicht gefunden.", vbCritical
Case Else
MsgBox Err.Description, vbCritical
End Select
Resume ExitWinWord

End Sub

Public Function IstWordGestartet() As Boolean
' Stellt fest, ob WinWord-97 gerade geladen ist

Dim obj As Object

On Error Resume Next
Set obj = GetObject(, "Word.Application") ' nach WinWord suchen
IstWordGestartet = (Err.Number = 0)
Set obj = Nothing

End Function

Das müsste wunderbar funktionieren.

Schönen Abend noch

Maximilian

Michi
29.04.2001, 20:31
Vielen Dank für die sehr ausführliche Lösung!
Ich werd's gleich ausprobieren.
Viele Grüße

Michi