Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Textbaustein nach Word exportieren

Begonnen von MaxP, August 01, 2023, 17:13:13

⏪ vorheriges - nächstes ⏩

MaxP

Hallo zusammen,

ich habe eine Frage, die sich auch auf meinen Beitrag
"Welche Exportmöglichkeit ist sinnvoll?" v. 05.09.22 bezieht.

Problem: Werden in Access unfangreiche Textbausteine als Memo in einer Tabelle gespeichert,
gehen div. Formatierungen wie Aufzählungen etc. verloren, die in Word aufwendig nachformatiert werden müssen.

Gibt es eine Möglichkeit, in Access 1 von 5 Textbausteinen in einem Formular auszuwählen
und dann lediglich nur einen Verweis auf eine bestimmte RTF-Datei zu exportieren.
In der RTF-Datei sollte sich jeweils ein Textbaustein befinden, der komplett formatiert ist
und in Word 1:1 eingefügt wird.

Gruß
Max
Win 10 pro 64 bit, Access 2003

Köbi

Zitatich habe eine Frage, die sich auch auf meinen Beitrag
"Welche Exportmöglichkeit ist sinnvoll?" v. 05.09.22 bezieht.

Könntest du netterweise den Link dazu bekanntgeben, oder ist das ein Geheimnis?

ebs17

Nein.
Richtext in Access ist HTML-basiert und etwas völlig anderes als das RTF-Format von Textverarbeiten, das ganz andere Steuerzeichen verwendet. Die "Übersetzung" ist auf jeden Fall ein Stück aufwändiger, aber lösbar.
Mit freundlichem Glück Auf!

Eberhard

MaxP

Zitat von: Köbi am August 01, 2023, 18:00:34
Zitatich habe eine Frage, die sich auch auf meinen Beitrag
"Welche Exportmöglichkeit ist sinnvoll?" v. 05.09.22 bezieht.

Könntest du netterweise den Link dazu bekanntgeben, oder ist das ein Geheimnis?

Hier der Beitrag:

https://www.access-o-mania.de/forum/index.php?topic=26245.0
Win 10 pro 64 bit, Access 2003

markusxy

#4
Zitat von: MaxP am August 01, 2023, 17:13:13In der RTF-Datei sollte sich jeweils ein Textbaustein befinden, der komplett formatiert ist
und in Word 1:1 eingefügt wird.

Und wie soll das in Word eingefügt werden?

Und warum der Umweg über Access.
Man kann doch Textbausteine direkt in Word pflegen und verwalten.

Hier noch der Link zu einem RTF Text Control.
Damit lässt sich Richtext direkt in Access pflegen und speichern.
https://www.fmsinc.com/MicrosoftAccess/RichTextMemo.html

MaxP

Hallo,

ich habe mir nun eine wenn auch unkonventionelle Lösung gebastelt, die aber funktioniert:

Der Textbaustein wird in eine RTF-Datei fertig formatiert geschrieben/eingefügt.
Der Pfad/Dateiname wird in einer AC-Tabelle/Abfrage z.B. unter Mein_Feld gespeichert.
Im Hauptdokument von Word habe ich nun das Feld {INCLUDETEXT {MERGEFIELD Mein_Feld}} eingefügt.
Vorausgesetzt Word kennt die AC-Tabelle als Datenquelle der Serienbrieffunktion.

Gruß
Max

Win 10 pro 64 bit, Access 2003

MaxP

#6
Hallo zusammen,

grundsätzlich funktioniert meine o.g. Vorgehensweise. Allerdings bin ich mir unsicher,
wie der komplette Ablauf, der ja in VBA programmiert werden soll, funktionieren soll.

generelle Vorgehensweise:
- Ich muss erst einmal einzelne Felder einer Abfrage in ein kleines RTF-Dokument mit MERGEFIELD einfügen. Dieses RTF-Dokument besitzt bereits formatierten Text. Je nach Auswahl der Aufgabe existieren alternative Dokumente. Statt einzelner Felder können das auch ganze Tabellen (aus AC-Abfragen in RTF-Tabelle exportiert) sein.
- Jedem RTF-Dokument kann nur eine AC-Abfrage/Tabelle zugrunde liegen, oder?
- Die div. RTF-Dokumente (ca. 12-15 Stk.) werden jeweils mit INCLUDETEXT in das Hauptdokument eingefügt.
- Vor dem Einfügen müssen bei den Feldern die Feldverknüpfung aufgehoben werden, da im Hauptdokument die einzelnen Quellen verloren gehen?
- Im Hauptdokument sollen auch direkt einige Felder eingefügt werden. Das Problem ist nur, dass diese Felder aus verschiedenen Abfragen/Tabellen stammen. Gibt es dafür eine Lösung?

Ich habe gelesen, dass man Word auch aus AC steuern kann.
Das wäre für
- das Öffnen u. Schließen der Dokumente
- das Aktualisieren der Felder
- das Aufheben der Feldverknüpfungen

erforderlich.

Kann mir jemand eine Hilfestellung geben, wie das in VBA aussehen könnte?

Gruß
Max
Win 10 pro 64 bit, Access 2003

ebs17

Gegenfrage: Welchen Umfang (Länge) und welche Besonderheiten haben Deine RTF-Bausteine?

Eigentlich sollte man solche in einem Tabellenfeld einer Accesstabelle speichern können, inklusive der RTF-Tags zur Formatierung. Bis Gesamtlänge 255 Zeichen (inkl. RTF-Tags) gar kein Problem, längere Texte benötigen Memo/LongText. Dieser Datentyp hat in der Verarbeitung einige Besonderheiten und erfordert ggf. eine aufwändigere Programmierung.

ZitatIm Hauptdokument sollen auch direkt einige Felder eingefügt werden
Wie sieht der Gesamtprozess aus?

Übersichtlich wäre z.B. die Verwendung einer Wordvorlage, die dann auch Textmarken für geplante Einfügungen enthält. Davon zieht man im laufenden Prozess eine Kopie und überträgt ausgewählte Inhalte (Strings) an die Textmarken und speichert die Kopie unter neuem Namen.
Mit freundlichem Glück Auf!

Eberhard

MaxP

Zitat von: ebs17 am August 17, 2023, 17:14:25Gegenfrage: Welchen Umfang (Länge) und welche Besonderheiten haben Deine RTF-Bausteine?
Unterschiedlich lang von einer halben Seite bis 3 Seiten
Besonderheiten, die bei Berichten nicht "exportfähig" sind: Aufzählungssymbole, Nummerierungen, Absatzformatierungen

Was sind RTF-Tags und wie speichert man die?

Zitat von: ebs17 am August 17, 2023, 17:14:25Wie sieht der Gesamtprozess aus?
Das Gesamtdokument (Vorlagedatei) soll ein Verkehrswertgutachten ergeben (i.d.R. umfasst dieses Gutachten ohne Anlagen etwa 30-40 Seiten) bestehend aus div. Tabellen, Auflistungen, Textbausteinen (RTF ohne Variablen) und Texteinfügungen (RTF mit Serienbrief-Variablen).

Über AC steuer ich die benötigten Daten und die entsprechenden RTFs, wo die Daten eingefügt werden. Mir ist wichtig, dass ich insgesamt den Formatierungsaufwand reduziere, da das viel Zeit und Nerven kostet. Darum die RTFs.

Ich suche schon seit Stunden nach den erforderlichen Codes zum Öffnen, Aktualisieren und Schließen von den RTFs. Da gibt es sehr wenig im Netz. Da ich ausschließlich alleine mit dem Programm arbeite, kann ich bei den Codes Sicherheitsabfragen wie "Ist Word bereits geöffnet?" verzichten.

Einen Code zum Öffnen habe ich gefunden:
Call Shell("D:\Microsoft Office\OFFICE11\winword.EXE " _
& "M:\Eigene-Dateien-D5\Vorlagen\Immobilienbeschreibung\TB_Verfahrenswahl\Sachwertobjekt.rtf")

Zitat von: ebs17 am August 17, 2023, 17:14:25Übersichtlich wäre z.B. die Verwendung einer Wordvorlage, die dann auch Textmarken für geplante Einfügungen enthält. Davon zieht man im laufenden Prozess eine Kopie und überträgt ausgewählte Inhalte (Strings) an die Textmarken und speichert die Kopie unter neuem Namen.
Das verstehe ich nicht. Wie meinst Du das?

Gruß
Max
Win 10 pro 64 bit, Access 2003

ebs17

Nochmal eine Gegenfrage: Warum soll insgesamt das RTF-Format verwendet werden und nicht einfach Word, das selber viel mehr kann und breit dokumentiert ist.
Word kann jeder, hat jeder.
Wer sich die Lizenzkosten als Anwender sparen will, kann auf kostenlose Wordviewer zurückgreifen.
Mit freundlichem Glück Auf!

Eberhard

MaxP

Das ist eigentlich egal. Beim Export aus AC wird halt häufig das RTFormat und nicht das DOC-Format erwähnt. Das Endresultat bei mir ist ja dann eine DOC-Datei.
Win 10 pro 64 bit, Access 2003

ebs17

#11
Eine Word-Vorlage ist eine Datei mit der Endung DOT/DOTX. Wenn man diese einfach öffnet, z.B. per Doppelklick, wird automatisch eine Kopie als DOC/DOCX angelegt, in der man arbeitet. Die Vorlage als solche bleibt erhalten, für weitere gleiche Verwendungen.

In die Vorlage schreibt man hinein, was in allen entstehenden Dokumenten erscheinen soll, also konstante Inhalte. Zusätzlich kann man Textmarken (Zielpunkte z.B. für zusätzliche Eintragungen) und/oder Seriendruckfelder integrieren. Diese gehen in die Arbeitskopie über und können individuell gefüllt werden.

Diesen Ausgangszustand kann man nun mit Code verwenden.
Sub test_XX()
    ' Early Binding, Verweis auf MS Word setzen
    Dim wdApp As Word.Application
    Dim wdDoc As Word.Document
    Dim sDocVorlage As String

    sDocVorlage = CurrentProject.Path & "\" & "NeueTabelle.dot"

    Set wdApp = New Word.Application
    With wdApp
        .Visible = True
        Set wdDoc = .Documents.Add(Template:=sDocVorlage)

        If wdDoc.Bookmarks.Exists("NameTextmarke") Then
            wdDoc.Bookmarks("NameTextmarke").Range.Text = "Mein Inhalt"
        End If

        wdDoc.SaveAs2 CurrentProject.Path & "\" & "MeinDoc.doc"
'        wdDoc.Close False
       
'        wdApp.Quit
'        Set wdDoc = Nothing
'        Set wdApp = Nothing
    End With

End Sub

In der Accessanwendung würde man die Zuordnung Textmarke zu Textbaustein verwalten und gewünschte Eintragungen auswählen.
Mit freundlichem Glück Auf!

Eberhard

MaxP

Danke Dir, ich werde den Code mal anpassen und ausprobieren.

Gruß
Max
Win 10 pro 64 bit, Access 2003