115122
Goto Top

Visual FoxPro Word Automation Auf Textmarke springen

Guten Morgen,

ich arbeite momentan an einem FoxPro-Projekt, bei dem Daten aus der Datenbank per Klick auf einen Button in ein vorformatiertes Vorlagendokument geschrieben werden sollen. Bisher habe ich das mehr oder weniger problemlos hinbekommen, jedoch finde ich für ein Problem keine Lösung.

Zur Info: Ich habe das Vorlagendokument (.docx) mit Textmarken gefüllt, an welchen ich den Text einfüge. Nun möchte ich einen Text aber nicht am Ende des Dokuments, sondern an einer Textmarke mitten im Dokument einfügen, ich finde aber keine funktionierende Lösung, wie ich an diese bestimmte Textmarke mit dem Cursor "ranspringen" kann.

Mittlerweile habe ich so ziemlich alle Ergebnisse bei *hier beliebige Suchmaschine einfügen* durch, ich hoffe, jemand von euch weiß hier weiter. Für Rückfragen stehe ich gern zur Verfügung.


Grüße,
lordzwieback

Content-Key: 294142

Url: https://administrator.de/contentid/294142

Ausgedruckt am: 29.03.2024 um 13:03 Uhr

Mitglied: emeriks
Lösung emeriks 25.01.2016 aktualisiert um 12:33:51 Uhr
Goto Top
Mitglied: 115122
115122 25.01.2016 um 10:38:21 Uhr
Goto Top
Nein, mit Foxpro als Programmiersprache. Die Word-Automation Syntax ist aber sehr ähnlich mit dem, was unter dem Link in VBA steht.

Nur verstehe ich nicht, wie dein Link mir weiterhelfen soll.
Das Problem besteht darin, dass ich bisher immer etwas am Ende des Dokuments eingefügt hatte. Nun stehe ich am Ende des Dokuments mit dem Cursor, muss jedoch an einer vorherigen Textmarke etwas einfügen. Und genau dafür finde ich keine funktionierende Lösung.
Mitglied: emeriks
emeriks 25.01.2016 um 10:57:50 Uhr
Goto Top
Reden wir von Visual Foxpro? Falls ja, da sollte es doch möglich sein, direkt auf Word zuzugreifen und es zu steuern? Ungefähr so wie hier beschrieben.
Mitglied: 115122
115122 25.01.2016 um 11:02:44 Uhr
Goto Top
Ja, wir reden von Visual Foxpro (so wie es als Frage-Überschrift steht).

Ja klar, das ist mir bewusst, dass das mittels der Word Automation funktioniert. Aber das Dokument, dass hier generiert werden soll, ist nicht gerade klein und ein wenig komplex aufgebaut, daher fand ich es praktikabler, mit Textmarken zu arbeiten.
Mitglied: emeriks
Lösung emeriks 25.01.2016 aktualisiert um 12:33:42 Uhr
Goto Top
daher fand ich es praktikabler, mit Textmarken zu arbeiten.
Einer von uns beiden versteht den anderen nicht ...

Der von mir genannte erste Link geht bloß bis Word 2003. Aber das ist bei neueren Versionen analog. Dort wird beschrieben, wie man eine Textmarke auswählt und dann dort einen Wert reinschreibt.
If oDoc.Bookmarks.Exists(strBMName) Then
    Set rng = oDoc.Bookmarks(strBMName).Range
    rng.Text = strBMText
    oDoc.Bookmarks.add strBMName, rng
End If


Der zweite Link beschreibt, wie man von VP auf Word.Application zugreift. Aber das ist Dir ja bereits klar, wie Du schreibst.

Wo hast Du jetzt noch ein Problem?
Mitglied: 115122
115122 25.01.2016 aktualisiert um 12:14:35 Uhr
Goto Top
Mea Culpa, da hab ich wohl nicht aufgepasst, Montagssymptome.

Ich habe den Code mal in VFP "übersetzt", das sieht so aus:

If oDocument.Bookmarks.Exists("werdegang")  
       oRange = oDocument.Bookmarks("werdegang").Range  
       oRange.Text = "Hallo Welt"  
       oDocument.Bookmarks.add("werdegang", oRange)  
Endif 


Dabei passiert nun folgendes:
Vorlagedatei mit Textmarken, eine davon mit dem Namen "werdegang". Die Datei wird geöffnet, die Textmarke "werdegang" wird anscheinend ersetzt oder neu gesetzt. Dabei wird der Text nun in die eckigen Klammern der Textmarke eingefügt.
Das sieht dann so aus: [Hallo Welt]

Normalerweise sollte die Textmarke "werdegang" mit dem Text "Hallo Welt" ersetzt werden (wobei auch die Klammern verschwinden sollten, wie bei den anderen Textmarken im Dokument).

Zur Info, wir arbeiten mit Office 2010. Ebenso bin ich kein Word-Automation-Spezialist, also nehmt mich nicht zu hart ran, wenn ich etwas Offentsichtliches übersehe.

Grüße und danke für deine Hilfe.

EDIT:
Ich habe die letzte Zeile mal auskommentiert, in welcher die Textmarke wieder geaddet wird. Jetzt funktioniert es anscheinend.
Mitglied: emeriks
emeriks 25.01.2016 um 12:25:52 Uhr
Goto Top
Jeet doch! face-wink
Mitglied: 115122
115122 25.01.2016 um 12:33:25 Uhr
Goto Top
Vielen Dank face-smile