PDA

Vollständige Version anzeigen : Access und Wordvorlagen


gruck
13.06.2001, 12:05
Mein Problem:
Ich bereits eine komplexe Datenbank erstellt.
Ist es möglich innerhalb eines Formulars (z.B. mit den Feldern Name, Vorname, Adresse, Telefonnummer....) von dem angezeigten Datensatz mit einer Schaltfläche eine Word-Dokumentvorlage zu öffnen und bestimmte Daten (z.B. Name und Vorname) in dieses eintragen lassen (z.B. in den Adressbereich)?

Mein Wunsch:
Eine nachvollziehbare Optimallösung.


Vielen Dank
Obi

Außerdem: Die Beiträge im Forum sind größtenteils super-super, Bewunderung an alle Freaks !!

kama
13.06.2001, 12:59
eine einfache lösung kenne ich nicht!!
Ich Benutze folgende Funktion um aus einem Kombifeld die entsprechende Vorlage zu wählen um dann die daten zu übertragen.
Betrachte das als anregung

Private Sub BflBriefBearbeiten_Click()
On Error GoTo Err_BflBriefBearbeiten_Click
Dim Dokument, Docpfad, Anwendung, Shellstring, anführung As String

'Serienbriefdokument für Kundenbrief erzeugen
DoCmd.TransferText acExportMerge, "", "Adresse für Serienbrief", "\\Htq99\tqdaten\Reklamation\Tabellen\SB.doc", False, ""


'öffnet das angeforderte Dokument
Anwendung = Me![Wordpfad]
Docpfad = "\\HTQ99\tqdaten\reklamation\vorlagen\"
Dokument = [Forms]![Reklamation bearbeiten].DokumentÜbergeben
anführung = """"
Shellstring = anführung & Anwendung & anführung & anführung & Docpfad & Dokument & anführung
Call Shell(Shellstring, 3)

Exit_BflBriefBearbeiten_Click:
Exit Sub

Err_BflBriefBearbeiten_Click:
MsgBox Err.Description
Resume Exit_BflBriefBearbeiten_Click

End Sub

Du mußt ein wordserienbrief ertsellen bei der du als datenquelle eine textdatei ,hier SB.doc, erstellst.
diese worddatei würde dann hier die variable dokument ersetzen.
versuchsmal

gruck
13.06.2001, 13:14
Ich probiers gleich mal aus!

Danke schon mal
Obi

Bodo M
13.06.2001, 13:29
Hallo Obi,
füge in die Dokumentvorlage an den entsprechenden Stellen Textmarken ein.

In der DB muss zunächst folgende Prozedur aufgerufen werden; am besten beim Öffnen der DB

Private Sub WordObjektbibliothek()

Teil einer Prozedur
On Error GoTo Fehler
Dim ref As Reference
Set ref = References.AddFromFile(SysCmd(acSysCmdAccessDir) & "MSWord8.olb")
Exit Sub
Fehler:
Select Case Err
Case 32813
Resume Next
Case 48
MsgBox "Word Objekt-Bibliothek konnte nicht gefunden werden." & vbCrLf & _
"Word kann ohne Verweis auf die Objekt-Bibliothek nicht gesteuert werden.", vbCritical + vbOKOnly, "Word Objekt-Bibliothek"
Case Else
MsgBox Err.Description
End Select
End Sub

In die Datenbank kannst Du folgende Befehle verwenden:

1.Im Deklarationsbereich des Klassenmoduls:
Private objWord As New Word.Application, objDokument As Word.Document

2. Teil einer Prozedur:
If Not WordGeladen() Then
Set objWord = New Word.Application
Else
Set objWord = GetObject(, "Word.Application")
End If
Set objDokument = objWord.Documents.Add(Vorlage)
Call DatenEinfügen("Nachname", "Meier)
Call DatenEinfügen...


Private Sub DatenEinfügen(strTextmarke As String, varDaten As Variant)
On Error GoTo Fehler
If Trim$(strTextmarke) <> "" Then
If objDokument.Bookmarks.Exists(strTextmarke) Then objDokument.Bookmarks.Item(strTextmarke).Range.Text = varDaten
End If
Exit Sub
Fehler:
If Err.Number = 94 Then Exit Sub
MsgBox Err.Description
End Sub

Function WordGeladen() As Boolean
WordGeladen = True
If FindWindow("OpusApp", 0&) = 0 Then
WordGeladen = False
End If
End Function

Viel Glück!

gruck
13.06.2001, 13:44
Auch an Dich ein Dankeschön!

Je mehr verschiedene Möglichkeiten, desto besser.

Obi

gruck
18.06.2001, 08:59
Sorry, aber scheinbar bin ich zu d....!

Die Vorschläge von Euch habe ich leider ohne Erfolg ausprobiert (seufz).

Diesen Vorschlag habe ich auch erhalten aber ich werde aus dieser Prozedur auch nicht schlau. Zwar öffnet mir der Button das Worddokument, aber die Datenübernahme klappt nicht. Warum? Kann mir ein Profi weiterhelfen oder war der Tip auch ein Griff ins Klo?
Bei den Antworten bedenkt bitte, dass Ihr es mit einem Anfänger zu tun habt (also bitte genau hinschreiben, wann ich meine eigenen Daten wie z.B. Pfad oder so etwas eintragen muß)

Private Sub MergeButton_Click()

On Error GoTo MergeButton_Err

Dim objWord

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


With objWord
'Make the application visible.
.Visible = True

'Open the document.
.Documents.Open ("H:\Verschiedenes\Test.doc")

'Move to each bookmark and insert text from the form.
.AktiveDocument.Bookmark("Name").Select
.Selection.Text = (CStr(Form!Grunddaten!Name))
.Selection.Paste

End With
'Print the document in the foreground so Microsoft Word will not close
'until the document finishes printing.
objWord.ActiveDocument.PrintOut Background:=False

'Close the document without saving changes.
objWord.ActiveDocument.Close SaveChanges:=wdDoNotSaveChanges

'Quit Microsoft Word and release the object variable.
objWord.Quit
Set objWord = Nothing
Exit Sub

MergeButton_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

End Sub

Danke schon mal,

Obi

JesusChrysler
18.06.2001, 09:04
Warum nutzt Du nicht einfach Berichte??? ;) Ok, ist ja nur son Gedanke... ;)

Gruss

JC

UlrikeR
18.06.2001, 10:09
Hallo Obi,

ich bin blutiger Access-Anfänger, daher traue ich mir kaum, hier eine Antwort reinzustellen (am besten nur in 3pt).
Bei mir funktioniert eine sicherlich sehr billige Lösung:

1. Abfrage mit allen gewünschten Daten erstellen
2. in Word Serienbrief hd_Adressen.doc als Hauptdokument anlegen
3. im Formular einen CmdButton mit der Ereignisprozedur

Private Sub CmdPrintSB_Click()
On Error GoTo Err_CmdPrintSB_Click

Dim stAppName As String

stAppName = "winword.exe LW:\Ordner_für_templates\hd_Adressen.doc"

Exit_CmdPrintSB_Click:
Exit Sub

Err_CmdPrintSB_Click:
MsgBox Err.Description
Resume Exit_CmdPrintSB_Click

End Sub

4. Word mit diesem Button öffnen, dann in Extras - Seriendruck - Daten importieren (Datenquelle öffnen) = DeineAdressen.mdb
5. Abfrage mit Word verbinden
6. Hauptdokument bearbeiten
Seriendruckfelder und Text eingeben
7. fertig.

Alle Access-Profis mögen mir verzeihen! :rolleyes:

Gruß, Ulrike

SoftNet
18.06.2001, 10:29
Hallo Obi,

anbei ein Link der Dir evtl. weiterhilft: http://support.microsoft.com/support/kb/articles/Q210/2/71.ASP?LN=DE&SD=SO&FR=0

Im Grunde nix anderes wie das was Bodo mach, nur eben direkt von MS als Artikel.

Gruss, Tommy. http://www.access-home.de

Phillip-Berlin
18.06.2001, 11:23
so, dann poste ich doch auch noch einen link *gg* www.serve-u.de/access (http://www.serve-u.de/access)
da gibts ein beispiel access->word
offener code ..
könnte man "leicht" für verschiedene vorlagen nutzen ..
gruß aus "madonnaverseuchtem" berlin

OBI .. du fängst den artikel mit: "ich habe bereits eine komplexe datenbank erstellt" an.
da musst du dich nicht wunder wenn vorausgesetzt wird das du schnallst, dass wenn jemand "Name" in nem code postet das du das dann durch die etnsprechenden formular oder berichts oder vorlagennamen aus deiner umgebung ersetzen kannst

ES LEBE MEINE RECHTSCHREIBREFORM!