2.2k Aufrufe
Gefragt in Datenbanken von amd-x2 Mitglied (135 Punkte)
Guten Abend miteinander,

habe es mir zur Aufgabe gemacht, eine DB zu erstellen, wo ich aus einem Formular heraus den "aktiven" Datensatz in eine Word-Datei übergebe (-> Schülerverwaltung -> Elternmitteilungen usw.)

Die Übergabe an sich funktioniert reibungslos. Doch ich bringe es nicht auf die Reihe, dass aus der DOT-Datei automatisch eine (neue) DOC gemacht wird.

Außerdem: Gibt es eine Möglichkeit, den Pfad zur Vorlagendatei (DOT) relativ zu setzen, so dass Access die DOT im gleichen Verzeichnis sucht, wo auch die DB liegt?

Hier mein Code:

Private Sub Mitteilung_Click()
On Error GoTo Err_Mitteilung_Click
Dim Word As Word.Application
Set Word = CreateObject("Word.Application")
With Word
.Visible = True
.Documents.Open "J:\Schuelerverwaltung\v3\FormMitteilung.dot "
.ActiveDocument.Bookmarks("Nachname").Select
.Selection.Text = Me!Nachname
.ActiveDocument.Bookmarks("Vorname").Select
.Selection.Text = Me!Vorname
.ActiveDocument.Bookmarks("PLZ").Select
.Selection.Text = Me!PLZ

USW. USW. USW.


End With
Exit_Mitteilung_Click:
Exit Sub
Err_Mitteilung_Click:
MsgBox Err.Description
Resume Exit_Mitteilung_Click
End Sub


Achso: Von VBA selbst hab ich nicht so viel Dunst ... habe mir den bisherigen Code zusammengegoogelt. Und endlich funktioniert er ... nur diese beiden "Kleinigkeiten" fehlen mir noch zur Zufriedenheit :)

Danke für eure Hilfe

5 Antworten

0 Punkte
Beantwortet von
Hallo amd-x2,

hab dein Problem mal unter A2000 getestet. Bei mir funktioniert es so:


Private Sub Mitteilung_Click()

On Error GoTo Err_Mitteilung_Click
Dim Word As Word.Application
Dim Pfad As String
Dim Doc As Word.Document

'--- Pfad zum Ordner in dem die Datenbank und auch das Word-Dokument liegt ---
Pfad = Application.CurrentProject.Path
'--- an den Pfad den Backslash + Dateinamen anhängen ---
Pfad = Pfad & "\FormMitteilung.dot"

Set Word = CreateObject("Word.Application")

'--- Hier auf die *.dot zugreifen, aber als *.doc öffnen ---
Set Doc = Word.Documents.Add(Pfad)

With Word
.Visible = True
'nächste Zeile auskommentiert !!
' .Documents.Open "J:\Schuelerverwaltung\v3\FormMitteilung.dot"
.ActiveDocument.Bookmarks("Nachname").Select
.Selection.Text = Me!Nachname
.ActiveDocument.Bookmarks("Vorname").Select
.Selection.Text = Me!Vorname
.ActiveDocument.Bookmarks("PLZ").Select
.Selection.Text = Me!PLZ

'USW. USW. USW.

End With
Exit_Mitteilung_Click:
Exit Sub
Err_Mitteilung_Click:
MsgBox Err.Description
Resume Exit_Mitteilung_Click

End Sub

----- ENDE Code -----

In Word öffnet sich dann ein "Dokument1.doc" mit den übergebenen Daten.

Gruß spacman
0 Punkte
Beantwortet von amd-x2 Mitglied (135 Punkte)
Danke spaceman für den optimierten Code

Access hat jedoch Probleme beim Kompilieren. Könnte vielleicht daran liegen, dass an dem System, an dem ich im Moment sitze, kein Verweis auf die Word Bibliothek möglich ist (unter Extras -> Verweise)?

Kann hier an der Serverinstallation aber nichts ändern. Gibt es einen Trick, dieses Problem zu umgehen?

Danke - amd
0 Punkte
Beantwortet von marie Experte (2k Punkte)
Hallo Amd,

vermutlich hast Du das Problem selbst erkannt, wenn nicht wäre es aber sehr sinnvoll, dass Du die Fehlermeldung hier korrekt wiedergibst.

gruß Marie
0 Punkte
Beantwortet von
Hallo Amd,

kann mich hier nur Marie anschliessen. Ich habe außer den 3 Verweisen die standardmäßig immer aktiv sind nur "Microsoft Word 9.0 Object Library" hinzugefügt. Da aber der Export nach Word vorher bei dir auch schon funktioniert hat muss der ja wohl schon vorhanden sein. Der Fehler kann eigendlich nur woanders liegen. Die Fehlermeldung wäre also sehr hilfreich.

Gruß spaceman
0 Punkte
Beantwortet von amd-x2 Mitglied (135 Punkte)
Hallo ihr beiden,

dass Problem resultierte daraus, dass ich die DB in Access2003 erstellt habe, und heute Vormittag dann unter 2000 gestartet habe. Lag also daran, dass in meiner DB ursprünglich die "MW 11.0 Object Library" aktiv war, die ja in V9.0 nicht existieren kann.

Habe jetzt also Office 2000 noch dazuinstalliert, was eh gut ist, da die DB mal unter Office 2000 laufen muss.

Es funktioniert jetzt alles soweit einwandfrei ... bei ungeschütztem DOT-Formular. Schöner u. besser wäre es, wenn ich die DOT schützen könnte und es trotzdem funktioniert :)

Wenn ich die DOT geschützt habe und meine Schaltfläche im Formular verwende, bekomme ich folgende Fehlermeldung:

"Diese Methode oder Eigenschaft ist nicht verfügbar, weil das Objekt auf einen geschützten Dokumentbereich verweist."

Habe übrigens den Code von spaceman in Verwendung.

Danke euch
...