Word für Dummies

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Word für Dummies

Beitrag von Benz »

Hi, nach längerem Suchen sowohl in der API-Referenz von Microsoft wie auch im Forum, bin ich leider nicht fündig geworden.
Und zwar suche ich die folgenden Befehle, die sich wahrscheinlich auseinander relativ schnell ergeben, ich weiß leider nur nicht wie die Objekte heißen:

- Schreiben von Text in Word
- Text aus Word herausholen
- Text in Word färben
- Text formatieren(fett,unterstrichen, kursiv,Schriftgröße, Schriftart,..)

Könnte ihr mir da einfach nur die Befehle hinklatschen?
Das wäre sehr freundlich :)
Was die genau machen finde ich dann schon selbst raus :wink:
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16488
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Word für Dummies

Beitrag von Martin Altmann »

Moin,
ich nutze den (einfacheren) Weg und schreibe RTF-Dateien - sind ja einfache Textdateien.
Man kann es sich einfach machen, indem man eine entsprechend aufbereitete Worddatei als RTF speichert und sich dann die Inhalte in einem Texteditor anschaut und als Grundlage nimmt.
Ansonsten sei empfohlen: http://de.wikipedia.org/wiki/Rich_Text_Format und hier die links am Ende (Spezifiaktionen).

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9343
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 358 Mal
Kontaktdaten:

Re: Word für Dummies

Beitrag von Tom »

Ich mache das so ähnlich wie Martin, gehe aber noch einen Schritt weiter. Wir verwenden "TX Text Control", das u.a. das Laden beliebiger Word-Dokumente und deren Konvertierung in beliebige andere Formate unterstützt. Dadurch gibt es keinerlei Versionskonflikte (denn Word verhält sich nicht immer gleich), und außerdem kann man "rock bottom" im RTF-Text operieren, was erstens viel einfacher ist und zweitens auch schneller geht. RTF ist vergleichsweise übersichtlich, je nachdem, was man an Funktionalitäten unterstützen will. Die o.g. Operationen wären relativ simpel umzusetzen.

Knifflig wird es - übrigens in allen Varianten -, wenn findige Benutzer Attribute innerhalb eines Wortes ändern: Brausepaul. Das findet aber auch Word nicht mehr als Wort. :wink:
Herzlich,
Tom
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Word für Dummies

Beitrag von Werner_Bayern »

Tom hat geschrieben:Knifflig wird es - übrigens in allen Varianten -, wenn findige Benutzer Attribute innerhalb eines Wortes ändern: Brausepaul. Das findet aber auch Word nicht mehr als Wort. :wink:

Code: Alles auswählen

oWord:documents:open(cWordDatei, .f., .t.)    // keine Konvertierungen anzeigen, readonly
oDoc := oWord:ActiveDocument:content
if oDoc:find:Execute(cText)
    ? cText, "gefunden"
endif
Einfach jetzt so geschrieben, müsste aber funktionieren.
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Word für Dummies

Beitrag von brandelh »

Im Zweifelsfalle immer die mitgelieferten Beispiele durchforsten ;-)

:arrow: ...\XPPW32\source\samples\activex\msword
Gruß
Hubert
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Word für Dummies

Beitrag von Benz »

Danke für eure ganzen Tips, hilft wirklich ungemein!
Ich würde das aber schon wenn möglich alles über die COM machen.
Das Beispiel mit den Bookmarks ist auch gut, das war eins der Dinge, die ich gesucht habe.
Aber das direkte Schreiben in Word ist damit ja leider noch nicht abgedeckt oder?
Ich meine, Word ersetzt in dem Beispiel ja nur die Bookmarks durch anderen Text. Kann man nicht in ein leeres Dokument auch irgendetwas schreiben, ohne bereits vorhandenes (was bei einem leeren Dokument ja nicht der Fall ist)
ersetzen zu müssen?
Benutzeravatar
Werner_Bayern
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2120
Registriert: Sa, 30. Jan 2010 22:58
Wohnort: Niederbayern
Hat sich bedankt: 29 Mal
Danksagung erhalten: 70 Mal

Re: Word für Dummies

Beitrag von Werner_Bayern »

Benz hat geschrieben:Kann man nicht in ein leeres Dokument auch irgendetwas schreiben, ohne bereits vorhandenes (was bei einem leeren Dokument ja nicht der Fall ist)
ersetzen zu müssen?

Code: Alles auswählen

cText := "Das in Word einfügen..."

oWord := CreateObject("Word.Application")
IF Empty( oWord )
   confirmbox(, "Microsoft Word ist nicht installiert!" )
   return NIL
ENDIF
oWord := oWord:dynamicCast(ActiveXObject())
oWord:Visible := .t.
oWord:documents:open(cWordDatei, .f., .f.)
oWord:Selection:Text := cText
oWord:Application:Activate()
oWord:Destroy()
es grüßt

Werner

<when the music is over, turn off the lights!>
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Word für Dummies

Beitrag von azzo »

Hallo,
Ich poste hier mal einen alten Forumsbeitrag im FW Forum von mir.
mfg
Otto
In case you don’t know that Word 2007 files are pure xml files and you can manipulate direct those files I would like to mention this.

I did some tests with the new Word Open XML format and have
"search replace" working.

This is what I did:
1. rename from docx to zip
2. unpack
3. Seek and replace in the document.xml for placeholders
4. Zip again the files and rename back to docx.
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

Re: Word für Dummies

Beitrag von Benz »

Ich hab jetzt mal ne WHILE gemacht, mit der in
jeder Zeile ein neuer Eintrag erstellt wird:

Code: Alles auswählen

oWord:Selection:Text := "Text mit Variablen" + chr(13)
oWord:Selection:Collapse(0)
Ich glaube es war Collapse, was ich benutzt hatte, jedenfalls hat es soweit funktioniert.
Das Problem bei Selection ist, dass der eingefügte Text markiert wird. Das habe ich umgangen, indem ich Collapse(0) benutze.

Mit dem Code jetzt habe ich allerdings 2 Probleme:

1. Je nach Wordeinstellung wird dadurch ein Absatz erstellt. Keine einfache Leerzeile, sondern ein Absatz, also im Prinzip 2 Leerzeilen.
2. Meine Anwendung verlangt es, dass ich viele Seiten damit erstellen kann. In einem Fall waren es 170.
Dann bekomme ich aber immer Fehlermeldungen nach diesem Motto:

" Es liegen zu viele Rechtschreibfehler vor. Bitte benutzen Sie die Rechtschreibprüfung zur Korrektur." Und die kommt bei 170 Seiten ca. 3 Mal.
Kann man die irgendwie unterdrücken?
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Word für Dummies

Beitrag von AUGE_OHR »

Benz hat geschrieben:Mit dem Code jetzt habe ich allerdings 2 Probleme:
ich fürchte es ist erst der Anfang ...
sicherlich kann man per activeX einiges machen aber willst du VBA lernen oder mit deiner Arbeit voran kommen ?

ich meine damit wenn der Kunde eine "integrierte" Textverarbeitung möchte greife ich doch lieber zu einem 3-PP Tool wie TxControl.
wenn der Kunden seine Rechnungen "Layout"(en) will dann versuche es mal mit List & Label.

beide bieten dir auch Events und Methoden für die Rückmeldungen ( was der User macht ) denn die beachtest du wohl noch nicht.
gruss by OHR
Jimmy
Antworten