PDA

Vollständige Version anzeigen : Felder aus Formular in Word.doc schreiben


Alarm112
17.01.2003, 15:34
Hallo Forum,
Aus meinem Formular (Access2000) möchte ich per Schaltfläche ein bestehendes Word-Dokument öffnen und die Adressdenfelder des aktuellen DS ins Dokument schreiben können.

Bei der Übergabe an Word funzt es nicht!
Bitte um Hilfe !!!!

Const ForReading = 1, ForWriting = 2, ForAppending = 3

Dim fs, f
Dim XAnrede as String
Dim XName As String
Dim XVorname As String
Dim XStraße As String
Dim XPLZ As String
Dim XOrt As String

XFName = Me!Firmenname
XAnrede = Me!Anrede
XName = Me!Name
XVorname = Me!Vorname
XStraße = Me!Straße
XPLZ = Me!PLZ
XOrt = Me!Ort

Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.OpenTextFile("c:\test.doc", ForAppending, TristateFalse)

f.WriteLine (XAnrede)
f.WriteLine (XVorname & " " & XName)
f.WriteLine (XStraße)
f.WriteBlankLines (1)
f.WriteLine (XPLZ & " " & XOrt)
f.Close


Danke im Voraus...

Andrew
17.01.2003, 19:33
Hi

Ich arbeite immer mit Texmarken und lass dann Access von Textmarke zu Texmarke springen und dort die Daten eintragen. Vielleicht nützt dir der folgende Code was!

Private Sub btn_DruckenBrief_Click()
On Error GoTo btn_DruckenBrief_Err

Dim objWord As Object
Dim objDokumet As Document

Set objWord = CreateObject("Word.Application.8") 'Startet Microsoft Word 2000.

With objWord

.Visible = True 'Macht Windows sichtbar .

'Das Dokument wird geöffnet.
Set objDokumet = objWord.Documents.Add("Dein Pfand und deine Datei")
'Sprint zu den Textmarken und fügt de Daten aus dem Forular ein.

.ActiveDocument.Bookmarks("Dein Feld1").Select
.Selection.Text = (CStr(Form!Dein Feld1))

.ActiveDocument.Bookmarks("Dein Feld2").Select
.Selection.Text = (CStr(Form!Dein Feld2))

.ActiveDocument.Bookmarks("Dein Feld3").Select
.Selection.Text = (CStr(Form!Dein Feld3))

.ActiveDocument.Bookmarks("Dein Feld4").Select
.Selection.Text = (CStr(Form!Dein Feld4))

.ActiveDocument.Bookmarks("Dein Feld5").Select
.Selection.Text = (CStr(Form!Dein Feld5))

'.ActiveDocument.PrintOut Background:=False 'Dokument wird im Hintergrund gedruckt
'.Quit acPrompt 'Word schliessen ohne speichern

End With

Exit Sub

btn_DruckenBrief_Err:
'If a field on the form is empty, remove the bookmark text, and
'continue
If Err.Number = 94 Then
objWord.Selection.Text = ""
Resume Next

End If

Exit Sub

Exit_btn_DruckenBrief_Click:
Exit Sub

Err_btn_DruckenBrief_Click:
MsgBox Err.Description
Resume Exit_btn_DruckenBrief_Click

End Sub

Alarm112
24.01.2003, 15:11
Hallo Andrew,
vielen DANK für Deinen Code!!! Konnte erst jetzt wieder hier ins Forum.
Kleine Anpassung:
...
Dim objDokumet As Object 'Dim objDokumet As Document lief bei mir nicht
...

Mit der kleinen Änderung hat es sofort funktioniert & die Freude war groß.
Mit den Texmarken habe ich mich schon angefreundet.
+++ danke danke danke +++

Sascha Trowitzsch
24.01.2003, 15:30
Dim objDokumet As Document funktioniert dann, wenn ein Verweis auf die Word Object Library gesetzt wurde.

AchimSKI
04.06.2007, 10:59
Hallo miteinander.

Genau das wollte ich auch machen und krame nun schon lange im Forum herum. Ich wollte auch den aktuellen Datensatz eines Formulars an ein WordDokument mit Seriendruckfeldern übergeben. Und mit Textmarken hab ich es auch schon probiert und kriege beidesmal die Meldung, daß der benutzerdefinierte Typ nicht definiert sei. Der Debugger (Acc2000) meckert hier:

Dim objDokumet As Document

Und ich hab nicht kapiert, was das bedeutet. Wenn Ihr mir helfen könntet, wäre das super. Gruß, AChim

jonas67808
04.06.2007, 11:36
Hallo Achim.

antwort steht eigentlich schon drüber;)

Du musst einen Verweis auf die Word Object Library.

Verweise setzt man im Code-Fenster (am besten ein Modul oder Code öffnen) unter Extras -> Verweise.

VG
Jonas

AchimSKI
04.06.2007, 13:05
Hi Jonas,

ja super! 1000 Dank. Schon wieder was gelernt. Funktioniert einfach wunderbar.

Gruß, Achim

pass-partout
18.10.2007, 09:41
Hallo,

hab mir den Beitraf hier mal durchgelesen, weil ich ähnliches folgendes Problem habe:

Aus einem Formular1 werden nach Eingeben der Daten per Button ein Word.doc als Serienbrief geöffnet, der wiederrum auf eine Abfrage in Access zugreift.

Diese Abfrage macht Sinn (denke ich), weil Daten aus mehreren Tabellen angezeigt werden müssen, also setzte ich in Formular1 das Feld "MAILING" auf "1" wonach die Abfrage sortiert ist.

Der Button hat dann folgenden Code:
Dim doc As String
Dim Word As Object

doc = "S:\Graduierten und Forschungsfoerderung\GuF Datenbank\Mailing_ZWV\test.doc"
Set Word = CreateObject("Word.Application")

With Word
.Visible = True
.Documents.Add doc
End With


er öffnet mir aber unter der Vorlage ein neues "Dokument1"
wie gestalte ich den Code so, dass er mit wirklich die Datei test.doc öffnet? Liegt es an "CreateObject"???