PDA

Vollständige Version anzeigen : Word aus Access öffnen


strasdir
30.09.2005, 11:57
Hallo zusammen,

ich möchte aus einer Access-Datenbank einen Serienbrief versenden, allerdings nicht über den von Access zur Verfügung gestellten Icon, sondern über eine Befehlsschaltfläche in einem Formular.
Über die Befehlsschaltfläche öffne ich nun das Word Dokument, welches die Access-Datenbank als Quelle hat. Das einzige Problem, meine Datenbank wird nun ein zweites mal geöffnet und ich muss mein Passwort eingeben. Kann man dies irgendwie verhindern?
Hier der Code der das Word Dokument aufruft:
Private Sub cmdOpenLetterOfSollicitation_Click()
Dim oapp As Object
Set oapp = CreateObject("word.application")
oapp.Visible = True
oapp.Documents.Open ("c:\database\préimprimé")

End Sub

Gruß,
Dirk

Morli
30.09.2005, 12:15
.... und wie sieht der Code im Word-Dok aus?

Morli

strasdir
30.09.2005, 13:37
Hallo Morli,

in dem Word Dokument habe ich keinen Code geschrieben. Ich habe word lediglich mit der db verbunden.

Dirk

KHS
30.09.2005, 21:14
Wenn du die Datei nur öffnen willst:
Schau mal in der Forensuche nach 'ShellExecute'
Und hier: http://www.dbwiki.de/wiki.php?title=VBA_Tipp:_Anwendung_mit_ShellExecute_starten

Anne Berg
30.09.2005, 23:34
Hallo Dirk.

Wie hast du denn die Datenquelle (Tabelle/Abfrage) in den Word-Serienbrief eingebunden?!

Ich setze bei Word-Serienbriefen, die ich aus Access heraus benutzen möchte, vorzugsweise separate Datenauszüge (z.B. Excel-Tabellen) als Datenquellen ein.
Wie man so etwas angeht, hängt aber auch davon ab, ob die Serienbriefe auch aus Word heraus geöffnet werden [können] sollen. Dann ist es natürlich nötig, die MDB zu starten, um an aktuelle Daten zu kommen! (sofern sie aus einer Tabelle/Abfrage kommen)

Also überleg dir erst einmal, wie du das einsetzen und benutzen willst, dann kann man die geeignete Lösung finden!

Nachtrag:
In früheren Office-Versionen war die DDE-Verbindung zwischen Office-Programmen voreingestellt, die für diesen meist unerwünschten Effekt des Mehrfachstarts der Datenquellen-Anwendung sorgte.
Seit A2K/XP ist das aber wohl nicht mehr der Fall, so dass ich mich etwas wundere...

strasdir
11.10.2005, 15:21
Hallo,
danke für Eure Beiträge. Ich werde mir die ShellExecute-Lösung mal anschauen.Wie hast du denn die Datenquelle (Tabelle/Abfrage) in den Word-Serienbrief eingebunden?!
Ich habe die Datenbank über das Word Icon Datenquelle öffnen mit dem Serienbrief verbunden und wie Du es schon richtig vermutet hast, Anne, über eine DDE-Verbindung. Bei den anderen Verbindungsarten erhalte ich eine Fehlermeldung.

Die Serienbriefe müssen nicht aus Word geöffnet werden können. Es reicht mir vollkommen, wenn man sie aus der Datenbank starten kann.
Dein Vorschlag, separate Datenauszüge zu verwenden könnte auch eine Möglichkeit sein. Der ganze Vorgang sollte allerdings nur einen einzigen Klick benötigen.

LG Dirk

Anne Berg
11.10.2005, 21:27
Hallo Dirk,
hinter einen "Klick" kann man jede Menge Code packen... ;)

Ich habe mich erst kürzlich wieder erneut mit diesem Thema beschäftigt, nachdem es Probleme mit wechselnden Zugriffspfaden zu Vorlagen und Datenquellen gab, und folgende Lösung für mich gefunden (und programmiert):
- Erstellen eines Datenauszugs in eine Excel-Tabelle via TransferSpreadSheet auf Basis einer Abfrage oder temp. Tabelle
- Aufruf von Word mit (wahlweise):
- Öffnen eines Serienbriefs auf Basis einer Serienbriefvorlage und unter Verwendung der Excel-Datenquelle oder
- Öffnen eines neuen Dokuments auf Basis einer Serienbriefvorlage (inkl. Verbinden mit der Excel-Datenquelle) zum Bearbeiten des Serienbriefs vor dem Ausdruck

Dabei wird jeweils nur ein Fenster für das gewünschte Ziel-Objekt erzeugt und man muss beim Schließen nur eine Speichernachfrage beantworten.

Voraussetzung hierfür ist eine Serienbriefvorlage mit den benötigten Seriendruckfeldern aber ohne Bindung an eine konkrete Datenquelle! Dies lässt sich mit Hilfe einer Test-Datenquelle (die Feldnamen müssen übereinstimmen!) und anschließender "Rückführung" des Serienbriefdokuments in ein "Hauptdokument" erzeugen. (hier scheint es große Unterschiede im "wie macht man das" zwischen A97 und AXP zu geben, so dass ich dazu erstmal nichts sage)

Wenn du Interesse an dieser Lösung hast, kannst du dich ja nochmal melden.

Ach so, doch noch eine Frage: welche Fehlermeldung kommt denn beim Versuch einer ODBC-Verbindung?

strasdir
12.10.2005, 10:03
Hallo Anne,

ich bin generell an der Lösung interessiert. Allerdings erscheint mir dies recht kompliziert und ich fürchte, dass ich auf Deine Hilfe angewiesen wäre.

Was Deine Frage hinsichtlich der Fehlermeldung betrifft, so erscheint ein kleines Fenster, mit folgendem Hinweis: "Word konnte die Datenquelle nicht öffnen."

Vielen Dank für Deine Hilfe und Deine ausführlichen Antworten.

Dirk

Anne Berg
14.10.2005, 13:24
Hallo Dirk, wenn du bis Montag warten kannst, kann ich dir den aktuellen Code zeigen, ich habe ihn im Moment nicht parat.

strasdir
14.10.2005, 14:06
Hallo Anne,

Ich habe noch einmal eine Frage an Dich. Könnte die Fehlermeldung die ich beim Versuch eine ODBC Verbindung herzustellen erhalte, damit zusammen hängen, dass ich versuche eine Abfrage zu öffnen?

Bis die Tage

Dirk

Anne Berg
17.10.2005, 12:37
Hallo Dirk.

Die Fehlermeldung sagt ja leider nicht viel aus. Meldet sich denn Word gar nicht dazu? (Vielleicht hilft da dieser (http://www.ms-office-forum.net/forum/showthread.php?t=149362&highlight=825765) Beitrag weiter?)

Ich habe mal das Modul angehängt, in dem ich die Serienbriefanforderungen behandele. Vor dem Aufruf der Function wird die Tabelle oder Abfrage per TransferSpreadSheet in eine Excel-Datei exportiert. Die Word-Vorlage ist ungebunden. Das ist aber auch alles im Modul dokumentiert.
Viel Erfolg!

strasdir
17.10.2005, 12:48
Vielen Dank Anne,

Ich schau mir das gleichmal an.

Dirk

strasdir
20.10.2005, 12:41
Hallo,

Vielen Dank Anne für Dein Code-Beispiel. Ich werde das auf jeden Fall aufheben. Letzten Endes habe ich das Problem folgendermaßen gelöst. Die Abfrage in der sich die Daten befinden, die anschließend an den Serienbrief übergeben werden, habe ich zuerst in eine Tabelle kopiert. Dann funktioniert auch die ODBC-Verbindung.

Grüße,

Dirk