Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: Dorian-1965 am Dezember 25, 2020, 12:51:52

Titel: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Dezember 25, 2020, 12:51:52
Moin, ich erstelle regelmäßig Exporte als RTF Datei.
Klappt alles sehr gut.
Mein Problem ist der voreingestellte Speicherort. Er schlägt immer den One Drive Pfad vor.
Ich habe One Drive deinstalliert und die Ordner gelöscht. Nun ist der vorgeschlagene Pfad leer.
Wo kann ich einen neuen Pfad einstellen ohne ihn immer eingeben zu müssen?

Dorian

(https://abload.de/img/screenshot2020-12-251z1jmj.jpg)

Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: steffen0815 am Dezember 26, 2020, 16:36:51
Hallo,
ich habe nix gefunden, wo man den Pfad voreinstellen könnte.

Allerdings würde ich (man) so etwas auch nicht benötigen.

Einen regelmäßigen Export würde/sollte man einfach entsprechend ausprogrammieren.
Entweder mit festen Pfad oder mit einem eigenen Dateidialog.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Dezember 27, 2020, 09:43:10
Und wie sieht so ein Dialog aus?
Im Moment so:


DoCmd.OpenReport "Bericht_12", acViewPreview, "", "[ID]=[Forms]![Tabelle_1]![ID]", acNormal

Dann gehe ich auf "Word" und das Menü (siehe 1 Beitrag) erscheint.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Dezember 27, 2020, 09:59:15
Hallo,

ZitatDoCmd.OpenReport "Bericht_12", acViewPreview, "", "[ID]=[Forms]![Tabelle_1]![ID]", acNormal

Dann gehe ich auf "Word" und das Menü (siehe 1 Beitrag) erscheint.

Du exportierst nach "Word" und generierst dann mit Word die PDF-Datei??


Schau Dir in der VBA-Hilfe die Outputto-Methode an...


z. B. und wenn der Code im Formular "Tabelle_1"  (besserer und aussagekräftiger Name wäre vorteilhaft..) abläuft:

.
.
DoCmd.OpenReport "Bericht_12", acViewPreview, , "ID = " & Me!ID,  acHidden
DoCmd.OutputTo acOutputReport, , acFormatPDF, "c:\Temp\Bericht.PDF"
DoCmd.Close acReport, "Bericht_12"
.
.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: steffen0815 am Dezember 27, 2020, 10:00:06
Hallo,
zum Export  eines Berichtes kannst du DoCmd.OutputTo(ObjectType, ObjectName, OutputFormat, OutputFile, AutoStart, TemplateFile, Encoding, OutputQuality)nutzen.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Dezember 27, 2020, 12:48:52
Zitat von: DF6GL am Dezember 27, 2020, 09:59:15...
Du exportierst nach "Word" und generierst dann mit Word die PDF-Datei??
...

Nein, ich erstelle den Bericht exportiere nach word und kopiere den Bericht aus Word um
ihn dann weiter zu schicken. Den gespeicherten Bericht lösche ich dann wieder.

Am Besten wäre es, wenn ich den entsprechenden Bericht einfach im Zwischenspeicher hätte
oder in einer Word / RTF Datei.

Dies hier

DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Dorian\Dokumente\Bericht.rtf"
funtioniert leider nicht.

Mit PDF geht es ...

DoCmd.OutputTo acOutputReport, , acFormatPDF, "C:\Users\Dorian\Dokumente\Bericht.pdf"
Dorian
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Dezember 27, 2020, 13:09:06
DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Dorian\Dokumente\Bericht.rtf", true
Der Funktioniert jetzt. Nur beim 2 Versuch nicht mehr da die Datei ja bereits existiert. Ich müsste sie erst löschen dann geht es wieder. Wie kann ich das lösen?
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: steffen0815 am Dezember 27, 2020, 13:16:19
Hallo,
nmK. wird die Zieldatei (ohne Fehlermeldung) automatisch überschrieben.

Was kommt denn für ein(e) Fehler(meldung)?
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Dezember 27, 2020, 13:18:50
Hallo,

versteh nicht, warum Word bemüht werden soll.



Was geht daran nicht?:

.
.
.
DoCmd.OpenReport "Bericht_12", acViewPreview, , "ID = " & Me!ID,  acHidden
DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Dorian\Dokumente\Bericht.rtf",True
DoCmd.Close acReport, "Bericht_12"
.
.

"True" öffnet Word mit der exportierten RTF-Datei.

Zeig mal den kompletten Code (C&P).
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: steffen0815 am Dezember 27, 2020, 13:22:34
Hallo,
ZitatAm Besten wäre es, wenn ich den entsprechenden Bericht einfach im Zwischenspeicher hätte

Dokumentinhalte automatisch in die Zwischenablage kopieren (ohne öffnen) (https://www.access-o-mania.de/forum/index.php?topic=25234.msg149562#msg149562)
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Dezember 27, 2020, 13:22:56
Hallo,


ZitatNur beim 2 Versuch nicht mehr da die Datei ja bereits existiert.


nein, nicht weil die Datei schon existiert, sondern weil Word (vermutlich) noch geöffnet ist und die Datei im Zugriff hat... Schließe also Word, bevor Du nochmal den Bericht exportierst.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Dezember 27, 2020, 15:35:26
Also wenn ich word und den Bericht schließe kommt beim 2 Versuch diese Fehlermeldung:

(https://abload.de/img/screenshot2020-12-271pjknk.jpg)

wenn ich Fehlermeldung schließe geht es wieder (Also beim 3 Versuch)
Ich bekomme also (zum Verständnis bei jedem 2 Versuch diese Fehlermeldung)

Hier der komplette Code:

Private Sub Befehl770_Click()
DoCmd.OpenReport "Bericht_12", acViewPreview, , "ID = " & Me!ID, acHidden
DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Dorian\Dokumente\Bericht.rtf", True
DoCmd.Close acReport, "Bericht_12"
End Sub

Word nutze ich um alles zu kopieren und weiter zu senden (Damit es weiter bearbeitet werden kann).
Den Access Bericht kann ich ja nicht kopieren (C&P).
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Dezember 27, 2020, 16:19:03
Hallo,

ZitatAlso wenn ich word und den Bericht schließe

Wie und womit schließt Du den Bericht??
Was passiert, wenn Du auf "Debuggen" klickst?
Welche Access-Version ist im Einsatz?


Word nutze ich um alles zu kopieren und weiter zu senden (Damit es weiter bearbeitet werden kann).

Du sprichst in Rätseln... soll heißen, ich versteh die Maßnahme nicht..

Oder kopierst Du aus Word teilweisen Text und fügst ihn in eine Email-Message ein, um die Email an irgendwen zu schicken?

Was soll dann damit weiterbearbeitet werden? Was sind denn das für Daten?



Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Dezember 27, 2020, 16:25:51
Sorry, der Bericht wird ja automatisch geschlossen. Ich schließe nur Word.
Wenn ich auf debuggen klicke ist diese Zeile in gelb:

DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Dorian\Dokumente\Bericht.rtf", True
Wenn ich den Debugger schließe oder auch sofort die Fehlermeldung schließe funktioniert es wieder.
Ich nutze Access 2019
Zitat von: DF6GL am Dezember 27, 2020, 16:19:03Oder kopierst Du aus Word teilweisen Text und fügst ihn in eine Email-Message ein, um die Email an irgendwen zu schicken?

..

Ja, es sind Daten die per E Mail weiter geschickt werden und weiterverarbeitet werden.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Dezember 27, 2020, 16:39:39
Hallo,

die Fehlersituation kann ich mir jetzt nicht erklären, wenn ich davon ausgehe, dass Du den Button klickst, auf Word wartest, die Texte kopierst und in eine Mail schiebst, Word dann schließt und danach erst wieder auf den Button klickst.

Alles in Allem würde ich auf dieses Word-Gepfriemel verzichten und passend vorgefilterte Daten (Du weißt ja sicher auch WAS für Daten Du kopieren willst) gleich in eine per VBA generierte Email zu platzieren.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Dezember 27, 2020, 16:41:15
Nee ich weiß auch nicht warum, trotzdem vielen Dank für die Mühe!!!

Dorian
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Dezember 28, 2020, 13:53:57
kleiner Nachtrag:

DoCmd.OpenReport "Bericht_12", acViewPreview, , "ID = " & Me!ID
DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Dorian\Dokumente\Bericht.rtf",True
DoCmd.Close acReport, "Bericht_12"

Ich habe in der ersten Zeile
,  acHidden weggelassen. Nun funktioniert es bei jedem Versuch!

Danke an alle und guten Rutsch!

Dorian
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Dezember 28, 2020, 14:11:25
ZitatIch habe in der ersten Zeile

,  acHidden
::)  ::)
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Januar 10, 2021, 14:11:49
Also, dieser Code funktioniert ja:

DoCmd.OpenReport "Bericht_12", acViewPreview, , "ID = " & Me!ID
DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Dorian\Dokumente\Bericht.rtf",True
DoCmd.Close acReport, "Bericht_12"

Wie kann ich diesen erweitern, so dass zuerst geprüft wird ob schon ein Bericht geöffnet ist und dann ein bereits geöffnete Bericht (C:\Users\Dorian\Dokumente\Bericht.rtf) erst geschlossen wird bevor ein neuer Bericht erstellt wird?
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Januar 10, 2021, 17:58:41
Hallo,

ich denke, Du meinst eigentlich etwas anderes als Du schreibst.

Bericht.rtf ist kein geöffneter Bericht, es ist der Export eines Berichtes ("Bericht_12") in eine RTF-Datei im Dokumente-Ordner.

Der Bericht selber ist durch "Docmd.Close...." schon geschlossen worden und die Erstellung der rtf-Datei ist abgeschlossen.

Ich würde vorschlagen, die rtf-Datei nach dem Namen des benutzten Berichtes zu benennen:

.
.
.
Dim strRptName as String
strRptName= "Bericht_12"

DoCmd.OpenReport strRptName, acViewPreview, , "ID = " & Me!ID
DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Dorian\Dokumente\" & strRptName,True
DoCmd.Close acReport, strRptName
.
.

Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Januar 11, 2021, 13:26:18
Zitat von: DF6GL am Januar 10, 2021, 17:58:41Hallo,

ich denke, Du meinst eigentlich etwas anderes als Du schreibst.

Bericht.rtf ist kein geöffneter Bericht, es ist der Export eines Berichtes ("Bericht_12") in eine RTF-Datei im Dokumente-Ordner.

Der Bericht selber ist durch "Docmd.Close...." schon geschlossen worden und die Erstellung der rtf-Datei ist abgeschlossen.

Ich würde vorschlagen, die rtf-Datei nach dem Namen des benutzten Berichtes zu benennen:
...

Ja, richtig.

Den Bericht umbenennen ist kein Problem, habe ich gemacht.

Ich meinte:

Wie kann ich diesen erweitern, so dass:

- zuerst geprüft wird ob schon ein RTF-Dokument (Bericht_12) geöffnet ist
- und dann ein bereits geöffnete Bericht (C:\Users\Dorian\Dokumente\Bericht_12.rtf) erst geschlossen wird
- bevor ein neuer Bericht erstellt wird und als RTF Datei ausgegeben wird?
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Januar 11, 2021, 16:22:16
Hallo,

ich verstehe nicht genau, was Du mit "RTF  geöffnet "  meinst.

Meinst Du, die rtf-Datei wird nach dem Export mit z. B. Word geöffnet und bearbeitet?

Zitatund dann ein bereits geöffnete Bericht (C:\Users\Dorian\Dokumente\Bericht_12.rtf) erst geschlossen wird

die rtf-Datei ist KEIN BERICHT und kann somit auch nicht geschlossen werden, wenn man von der o. g. Situation absieht.


Sie kann höchstens "gelöscht" werden, wenn man die Datei nicht mehr haben will.

Außerdem wird die Datei bei erneutem Export des Access-Berichtes (evtl. erst nach Nachfrage) überschrieben.


Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Januar 11, 2021, 17:35:58
Sorry, ja ichg meinte die geöffnete RTF Datei. Sie soll automatisch geschlossen werden und Word beendet werden. Dann kann ich den Bericht und die rtf datei erneut geöffnet werden...
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Januar 11, 2021, 18:53:56
Hallo,

warum wird denn die RTF-Datei mit Word überhaupt geöffnet, wenn Du das nicht brauchst....

Insofern, lass einfach "True" bei Docmd.OutputTo weg und die rtf-Datei bleibt unangetastet...
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Januar 12, 2021, 08:58:55
Nachdem ich die Daten aus der RTF Datei kopiert und weiterverarbeitet habe, wechsel ich den Datensatz und erstelle den Bericht und den Export als RTF Datei erneut. Das geht aber nur wenn ich vorher die alte RTF Datei schließe. Ich habe gehofft es mit Access zu automatisieren. Im Moment schließe ich die RTF Datei selbst und erstelle dann - mit einem neuen Datensatz - eine neue RTF Datei...
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Januar 12, 2021, 11:01:26
Hallo,


woher soll Access denn wissen, dass Du mit der Bearbeitung in Word fertig bist?

Du musst schon selber Word schliessen und damit den Zugriff auf die rtf-Datei beenden.


Du könntest ja mal verraten, was es mit der "Weiterverarbeitung" auf sich hat und was genau dabei geschieht.


Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Januar 12, 2021, 11:57:10
OK, also:

1. Ich erstelle einen Bericht (Bericht_12) in Access
2. Dieser Bericht wird automatisch als RTF Datei ausgegeben
3. Somit ist Word geöffnet und damit auch die RTF Datei
4. Ich kopiere die Daten aus der Word Datei und gebe sie weiter (E Mail oder a.)
5. Ich wechsel den Datensatz und möchte wieder diesen Bericht erstellen (mit anderen Daten)
6. Der Bericht (mit anderen Daten) soll wiederum als RTF Datei ausgegeben werden.
7. Das geht aber nur wenn Word beendet wurde.

Ich möchte also den vorhandenen Code erweitern:

DoCmd.OpenReport "Bericht_12", acViewPreview, , "ID = " & Me!ID
DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Dorian\Dokumente\Bericht.rtf",True
DoCmd.Close acReport, "Bericht_12"

1. prüfen ob Word und damit die RTF Datei geöffnet ist
2. Falls ja soll Word beendet werden und die RTF Datei geschlossen werden (ohne speichern)
3. Dann soll der Bericht erneut geöffnet werden (mit anderen Daten) (Bericht_12)
4. Dieser Bericht soll dann mit Word als RTF Datei geöffnet werden.

Ich hoffe es nun verständlich beschrieben zu haben...

Gruß Dorian
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Januar 12, 2021, 13:32:14
Hallo,

nochmal: Woher weiß Access, das Du  mit dem Bearbeiten in Word fertig bist und Word geschlossen werden könnte...?

Zum anderen kommt mir der Umweg über Word und die Kopiererei in eine (neue) Mail recht verquert vor.

Warum exportierst Du den Bericht nicht in eine PDF-Datei und hängst diese an eine neu generierte Mail an (und sendest sie auch gleich noch ab)?


 
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Januar 12, 2021, 13:52:20
Zitat von: DF6GL am Januar 12, 2021, 13:32:14nochmal: Woher weiß Access, das Du  mit dem Bearbeiten in Word fertig bist und Word geschlossen werden könnte...?

Wenn ich einen neuen Bericht erstelle und ihn als RTF erstellen möchte, dann soll Word beendet vorher beendet werden.

1. prüfen ob Word und damit die RTF Datei geöffnet ist
2. Falls ja soll Word beendet werden und die RTF Datei geschlossen werden (ohne speichern)
3. Dann soll der Bericht erneut geöffnet werden (mit anderen Daten) (Bericht_12)
4. Dieser Bericht soll dann mit Word als RTF Datei geöffnet werden.

Zitat von: DF6GL am Januar 12, 2021, 13:32:14Zum anderen kommt mir der Umweg über Word und die Kopiererei in eine (neue) Mail recht verquert vor.

Warum exportierst Du den Bericht nicht in eine PDF-Datei und hängst diese an eine neu generierte Mail an (und sendest sie auch gleich noch ab)?

Das mag schon sein, allerdings habe ich mir zu dieser Vorgehensweise schon meine Gedanken gemacht.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Januar 12, 2021, 20:36:46
Hallo,

ZitatDas mag schon sein, allerdings habe ich mir zu dieser Vorgehensweise schon meine Gedanken gemacht.

Das kann ja sein, beantwortet aber meine Frage nicht.  Wie auch immer:

Du könntest in der Db mittels Button ("btnWeitermachen") und Word-Automation auf die aktuelle Word-Instanz "aufschalten" und mit SaveAs das Word-Doc sichern, wenn gewünscht, oder ansonsten verwerfen und Word  mit Quit schliessen.

Wenn Dir dieser Aufwand genügend Wert für Dich hat gegenüber einem, maximal 2 Klicks zum Beenden von Word, dann setze es so um.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Januar 13, 2021, 13:19:06
Zitat von: DF6GL am Januar 12, 2021, 20:36:46Du könntest in der Db mittels Button ("btnWeitermachen") und Word-Automation auf die aktuelle Word-Instanz "aufschalten" und mit SaveAs das Word-Doc sichern, wenn gewünscht, oder ansonsten verwerfen und Word  mit Quit schließen

Genau das ist mein Ziel. Ich habe es mit
ActiveDocument.Close wdDoNotSaveChangesversucht, geht nicht. Dann mit
objWord.Quit
geht aber auch nicht ...
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Januar 13, 2021, 15:32:32
Hallo,

solche Codefragment bringen uns nicht weiter....


Zeige bitte die kompletten Prozeduren , die den Bericht exportieren und Word schließen sollen.

Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Januar 14, 2021, 07:47:07
ActiveDocument.Close wdDoNotSaveChanges
objWord.Quit
DoCmd.OpenReport "Bericht_12", acViewPreview, , "ID = " & Me!ID
DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Dorian\Dokumente\Bericht.rtf",True
DoCmd.Close acReport, "Bericht_12"
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Januar 14, 2021, 11:28:54
Hallo,

eigentlich sagte ich KOMPLETT   ::)
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Januar 14, 2021, 12:17:34
Zitat von: DF6GL am Januar 14, 2021, 11:28:54eigentlich sagte ich KOMPLETT  ::)

 :-[  ... Das war komplett, ich sagte ja ich bräuchte Hilfe ...

und Word-Automation auf die aktuelle Word-Instanz "aufschalten" und mit SaveAs das Word-Doc sichern, wenn gewünscht, oder ansonsten verwerfen und Word  mit Quit schliessen.
ich habe es schon gelesen, aber das übersteigt leider meine Fähigkeiten ...

Dorian
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am Januar 14, 2021, 12:55:21
Hallo,

naja, wenn diese paar Codezeilen komplett sind, dann fliegt Dir die DB um die Ohren...



Lad mal die Db hier hoch, komprimiert/repariert, kompiliert und gezippt...Sonst kommen wir nicht weiter.


Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am Januar 22, 2021, 15:35:26
Die DB ist viel zu umfangreich um sie hier hochzuladen...

Ich habe es nun so versucht. Geht leider auch nicht (Zuerst Word schließen):

Dim strRptName as String
strRptName= "Bericht_12"
DoCmd.Close strRptName
DoCmd.OpenReport strRptName, acViewPreview, , "ID = " & Me!ID
DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Dorian\Dokumente\" & strRptName,True
DoCmd.Close acReport


Ich möchte einfach:

1. Die mit Word geöffnete Datei "Bericht_12" schließen, falls sie noch geöffnet ist.
2. Den Bericht "Bericht_12" öffnen
3. Den Bericht als RTF Datei nach Word exportieren.

... und zwar genau in dieser Reihenfolge.

Ich möchte den Bericht & Export nach Word mehrfach nacheinander ausführen mit jeweils anderen Daten. Daher muss Word vor jedem neuen Bericht und Export immer zuerst geschlossen werden.

Ich hoffe nun ist klar, wann Access "Word" beenden soll und was ich überhaupt bezwecken möchte.

Dorian
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: PhilS am Januar 22, 2021, 16:24:39
Zitat von: Dorian-1965 am Januar 22, 2021, 15:35:26Ich habe es nun so versucht. Geht leider auch nicht (Zuerst Word schließen):
"Geht leider nicht" ist als Problembeschreibung etwas dünn.

Ich sehe in deinem Code nichts, was mit dem "Word schließen"-Thema zu tun hat.
Falls dir dazu der Ansatz fehlt google mal nach Word Automation Getobject (https://www.google.com/search?q=word+automation+getobject)
Wenn du mit den gefunden Lösungsansätzen nicht weiter kommst, dann helfen wir dir hier gern weiter. - Bitte immer eine aussagefähige Problembeschreibung mitliefern. ;-)
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am August 18, 2021, 15:10:12
OK, ich bin immer noch nicht weiter...

Dieser Code funktioniert so wie ich es möchte:

Private Sub Befehl770_Click()
Dim strRptName As String
strRptName = "Bericht_1"
If IsNull(Me!MediaInfos) Then
DoCmd.OpenReport "Bericht_1", acViewPreview, , "ID = " & Me!ID
DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\***\AppData\Local\Temp\Bericht_1.rtf", True
DoCmd.Close acReport, strRptName
Else
        MsgBox "Es sind Media Infos vorhanden!", vbInformation, ""
End If
End Sub

Es wird ein Bericht erstellt und mit Word geöffnet. Der Bericht wird wieder geschlossen und das Word Dokument bleibt geöffnet. Der Name des Word Dokuments ist "Bericht_1".
Klappt alles wunderbar.

Jetzt möchte ich ein anderen Datensatz aufrufen und damit auch den Bericht_1 erstellen.
Hier erscheint aber der Fehler, weil der Bericht_1 ist ja noch in Word geöffnet. Ich muß also
Nach Word wechseln und den geöffneten Bericht schließen. Dann wieder zu Access und den Bericht_1 erneut aufrufen.

Hier möchte ich gerne den o.a. Code erweitern. Access soll prüfen ob der Bericht_1 schon geöffnet ist und falls ja, das geöffnete Word Dokument Bericht_1 schließen und dann erst soll der o.a. Code ausgeführt werden.

Es ist vieleicht einfach nach Word zu wechseln und den Bericht selbst zu schließen. Aber wenn man häufig mit anderen Daten den Bericht erstellt wäre es schon eine enorme Erleichterung...

Ich habe es schon selbst versucht und auch Google bemüht, aber leider habe ich es nicht hinbekommen.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: PhilS am August 18, 2021, 15:50:02
Zitat von: Dorian-1965 am August 18, 2021, 15:10:12Jetzt möchte ich ein anderen Datensatz aufrufen und damit auch den Bericht_1 erstellen.
Hier erscheint aber der Fehler, weil der Bericht_1 ist ja noch in Word geöffnet.
Muss denn immer "Bericht_1" als Dateiname verwendet werden? Wäre es nicht sowieso schon sinnvoller, dort ein eindeutiges Merkmal aus dem Datensatz (ID, KDNR, Kundenname etc.) zu verwenden, um dem Benutzer auch den Zusammenhang zum jeweiligen Datensatz schon anhand des Dateinamens deutlicher zu machen? Das Problem mit der geöffneten Datei wäre dann automatisch nebenbei gelöst.

Zitat von: Dorian-1965 am August 18, 2021, 15:10:12Ich habe es schon selbst versucht und auch Google bemüht, aber leider habe ich es nicht hinbekommen.
Wie schon mehrfach angemerkt, wäre es hilfreich, wenn du kurz beschreiben würdest, was du versucht hast und warum es nicht funktioniert hat. Das macht es viel einfacher darauf basierend Alternativen oder Lösungen vorzuschlagen.

Wenn die o.a. Lösung mit eindeutigen Dateinamen aus Gründen nicht möglich ist, würde ich versuchen per VBA eine evtl. laufende Word-Instanz zu holen (Stichwort: GetObject) und sofern darin die betreffende Datei geöffnet ist, diese schließen.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am August 19, 2021, 12:38:16
Bericht_1 macht schon Sinn weil es sehr viele Berichte gibt.
Ich habe dafür eine separate Übersicht.
Verschiedene Berichte zu öffnen ist ja auch kein Problem.
Nur manchmal muss ich den selben Bericht mit anderen Daten mehrfach nach Word exportieren, dann wäre es hilfreich
mir von Access helfen zu lassen.

Mein letzter Versuch war:

Private Sub Befehl770_Click()
Dim objWord As Word.Application
Dim objDocument As Word.Document
AppActivate objDocument.Bericht_1
objWord.Quit
Set objWord = Nothing
Dim strRptName As String
strRptName = "Bericht_1"
If IsNull(Me!MediaInfos) Then
DoCmd.OpenReport "Bericht_1", acViewPreview, , "ID = " & Me!ID
DoCmd.OutputTo acOutputReport, , acFormatRTF, "C:\Users\Wchb\AppData\Local\Temp\Bericht_1.rtf", True
DoCmd.Close acReport, strRptName
Else
        MsgBox "Es sind Media Infos vorhanden!", vbInformation, ""
End If
End Sub

Quelle war: https://access-im-unternehmen.de/Word_automatisieren/

Fehler beim kompilieren. Benutzer defenierter Typ nicht definiert.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am August 19, 2021, 19:30:20
Hallo,

der Code

Dim objWord As Word.Application
Dim objDocument As Word.Document
AppActivate objDocument.Bericht_1
objWord.Quit
Set objWord = Nothing

ist für sich gesehen nonsens an dieser Stelle.


Es nützt nichts, Codefragmente einfach aus einem anderen Kontext heraus und ohne Anpassungen zu kopieren...


Der Rest des Code erzeugt ein RTF-Dokument, das dann anschließend mit Word geöffnet wird  (..,True)




Mit separater Word-Automation könnte die RTF-Datei ebenfalls geöffnet werden:
(Verweis auf MS Word Object-Library setzen!):


Dim objWord As Word.Application
Dim objDocument As Word.Document
Set objWord = New Word.Application
Set objDocument = objWord.Documents.Open ("C:\Users\Wchb\AppData\Local\Temp\Bericht_1.rtf")
objWord.Visible = True
AppActivate objDocument.Name


Set objWord = Nothing
.
.
.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am August 20, 2021, 05:54:58
Zitat von: DF6GL am August 19, 2021, 19:30:20Der Rest des Code erzeugt ein RTF-Dokument, das dann anschließend mit Word geöffnet wird  (..,True)

Ja, klappt auch wunderbar. Nur wie kann ich dieses Dokument wieder schließen?
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: DF6GL am August 20, 2021, 08:10:39
Hallo,

indem Du auf die Word-Instanz zugreifst (GetObject) und die SaveAs-Methode von Word benutzt

oder im aktuell geöffneten Word auf "Datei/schließen"  klickst.


Allerdings verstehe ich diese ganze Vorgehensweise nicht.  Warum öffnest Du überhaupt die generierte RTF-Datei, um sie anschließend gleich wieder zu schließen?

Zudem ist mir völlig unklar, warum es immer derselbe Dateiname sein muss, obwohl sich der Inhalt des Berichtes (Bericht_1) jedes Mal (vermutlich) ändert.


Entweder Du erklärst einmal schlüssig dieses Konzept oder Du überdenkst es nochmal intensiv.
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: PhilS am August 20, 2021, 16:45:51
Zitat von: Dorian-1965 am August 19, 2021, 12:38:16Bericht_1 macht schon Sinn weil es sehr viele Berichte gibt.

Aha?
Warum macht da "Bericht_1" mehr Sinn, als "Bericht_1_Kunde_47110815_Max_Mustermann"?

Zitat von: Dorian-1965 am August 19, 2021, 12:38:16Quelle war: https://access-im-unternehmen.de/Word_automatisieren/

Die Quelle ist sehr gut, wenn man ein wenig weiter liest. ;-)

    Dim wordDoc As Object
    Set wordDoc = GetObject("C:\pfad\zu\deinem\Report1.rtf")
    wordDoc.Close False
   
    Set wordDoc = Nothing
Titel: Re: Standardspeicherort für RTF Berichte
Beitrag von: Dorian-1965 am August 21, 2021, 05:03:58
Zitat von: PhilS am August 20, 2021, 16:45:51Dim wordDoc As Object
    Set wordDoc = GetObject("C:\pfad\zu\deinem\Report1.rtf")
    wordDoc.Close False
   
    Set wordDoc = Nothing

Ja, genau das ist die Lösung! Vielen Dank dafür!

Zitat von: PhilS am August 20, 2021, 16:45:51Aha?
Warum macht da "Bericht_1" mehr Sinn, als "Bericht_1_Kunde_47110815_Max_Mustermann"?

Ich erstelle den Bericht_1. Dann schicke ich ihn weiter (nicht mit Outlook o.ä.)
Dannach brauche ich ihn nicht mehr. Dann den nächsten Bericht u.s.w.

Danke nochmals!

Gruß

Dorian