RTF Text in Word Dokument einfügen / Faxen aus Word
Moderator: Moderatoren
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
RTF Text in Word Dokument einfügen / Faxen aus Word
Hallo,
ich würde gerne über ActiveX einen RTF Text in ein Word Dokument einfügen. Ich verwende DCRTF von eXpress++ zum Erstellen des Textes, funktioniert sehr gut. Wenn ich jedoch in ein bestehendes Word Dokument den RTF Text mit ActiveX einfügen, werden alle Formatierungen etc. als normaler Text dargestellt. Wie kann ich Word beibringen, dass es RTF ist und kein nomaler Text ?
Und noch eine Frage zu Word und ActiveX: habe bei den Methoden eine gefunden die sendfax() heisst. Wie kann man die anwenden ? Sieht so aus, als ob man bei installiertem Fax (welches auch immer) sofort aus Word an eine angegebene Adresse faxen kann. Das selbe gibt es für Email. Anbei ein Auszug aus JACE mit diesem Teil.
Grüsse
Rudolf
******************************************************************
//////////////////////////////////////////////////////////////////////
// Searches for a bookmark cBM by name in a given bookmark
// collection oBM, and assigns a new value cValue.
//////////////////////////////////////////////////////////////////////
FUNCTION ReplaceBookmark(oBM,cBM,cValue)
LOCAL lRet := oBM:Exists(cBM)
LOCAL oF
IF(lRet)
set_msg("Replace " + cBM + " with " + var2char(cValue))
oF := oBM:Item(cBM)
oF:Range:Text := cValue
oF:Destroy()
ENDIF
RETURN(lRet)
// HRESULT SendFax() (Word_Application:SendFax)
// HRESULT SendFax([in] BSTR Address, [in opt] *VARIANT Subject) (Word_Document:SendFax)
METHOD WordDocument:SendFax(Address,hOptionalParameters)
JAXPPCALLACTIVEXMETHODEX(::m_pUnk,256,1,0,@::ExceptionCodeBlock,hOptionalParameters,Address,8,2)
RETURN self
ich würde gerne über ActiveX einen RTF Text in ein Word Dokument einfügen. Ich verwende DCRTF von eXpress++ zum Erstellen des Textes, funktioniert sehr gut. Wenn ich jedoch in ein bestehendes Word Dokument den RTF Text mit ActiveX einfügen, werden alle Formatierungen etc. als normaler Text dargestellt. Wie kann ich Word beibringen, dass es RTF ist und kein nomaler Text ?
Und noch eine Frage zu Word und ActiveX: habe bei den Methoden eine gefunden die sendfax() heisst. Wie kann man die anwenden ? Sieht so aus, als ob man bei installiertem Fax (welches auch immer) sofort aus Word an eine angegebene Adresse faxen kann. Das selbe gibt es für Email. Anbei ein Auszug aus JACE mit diesem Teil.
Grüsse
Rudolf
******************************************************************
//////////////////////////////////////////////////////////////////////
// Searches for a bookmark cBM by name in a given bookmark
// collection oBM, and assigns a new value cValue.
//////////////////////////////////////////////////////////////////////
FUNCTION ReplaceBookmark(oBM,cBM,cValue)
LOCAL lRet := oBM:Exists(cBM)
LOCAL oF
IF(lRet)
set_msg("Replace " + cBM + " with " + var2char(cValue))
oF := oBM:Item(cBM)
oF:Range:Text := cValue
oF:Destroy()
ENDIF
RETURN(lRet)
// HRESULT SendFax() (Word_Application:SendFax)
// HRESULT SendFax([in] BSTR Address, [in opt] *VARIANT Subject) (Word_Document:SendFax)
METHOD WordDocument:SendFax(Address,hOptionalParameters)
JAXPPCALLACTIVEXMETHODEX(::m_pUnk,256,1,0,@::ExceptionCodeBlock,hOptionalParameters,Address,8,2)
RETURN self
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2828
- Registriert: Fr, 10. Feb 2006 9:51
- Wohnort: Aachen
- Hat sich bedankt: 259 Mal
- Danksagung erhalten: 12 Mal
- Kontaktdaten:
Hallo Rudolf,
hast Du mal versucht, daß WORD-Dokument im RTF-Format zu speichern und anschließend den RTF-Text einzufügen?
Desweiteren habe ich mit dem Rtf-Editor vom Alaskabeispiel einen Rtf-Text erzeugt, diesen in die Zwischenablage getan und anschließend in WORD eingefügt. Dies hat bei mir funktioniert.
Vielleicht kannst Du auf diesem Weg den Rtf-Text einfügen.
Uli
hast Du mal versucht, daß WORD-Dokument im RTF-Format zu speichern und anschließend den RTF-Text einzufügen?
Desweiteren habe ich mit dem Rtf-Editor vom Alaskabeispiel einen Rtf-Text erzeugt, diesen in die Zwischenablage getan und anschließend in WORD eingefügt. Dies hat bei mir funktioniert.
Vielleicht kannst Du auf diesem Weg den Rtf-Text einfügen.
Uli
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo Uli,
vielen dank für den Tip, habe gesehen, dass es im RTF Format sowieso viel leichter ist etwas einzufügen. Die Tag's sind relativ einfach zu finden im Text und dann kann ich den anderen RTF Text leicht einfügen. Werde für das ganze eine eigene Funktion schreiben, dann kann ich auch ohne ActiveX das Formular ausfüllen.
Grüsse
Rudolf
vielen dank für den Tip, habe gesehen, dass es im RTF Format sowieso viel leichter ist etwas einzufügen. Die Tag's sind relativ einfach zu finden im Text und dann kann ich den anderen RTF Text leicht einfügen. Werde für das ganze eine eigene Funktion schreiben, dann kann ich auch ohne ActiveX das Formular ausfüllen.
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
habs geschafft bis auf ein Problem, es gehen mir die Grafiken aus dem Originaldokument verloren. Ich vermute es liegt daran, dass XBase++ beim memoread() bzw. memowrit() irgendwas zerstört.
Grüsse
Rudolf
function rtfrepl(cForm,aData,cDest)
******************************************************************
local x,cBase1,cBase2,cRepl
// {\*\bkmkstart TEXT}[TEXT]{\*\bkmkend TEXT}
// {\*\bkmkstart SALUTATION}[SALUTATION]{\*\bkmkend SALUTATION}
local cM := memoread(cForm)
for x := 1 to len(aData)
cBase1 := "{\*\bkmkstart " + aData[x,1] + "}[" + aData[x,1] + "]"
cBase2 := "{\*\bkmkend " + aData[x,1] + "}"
cRepl := aData[x,2]
cM := strtran(cM,cBase1,cRepl)
cM := strtran(cM,cBase2,"")
next x
memowrit(cDest,cM)
WinAPIOpen(cDest)
return .t
Grüsse
Rudolf
function rtfrepl(cForm,aData,cDest)
******************************************************************
local x,cBase1,cBase2,cRepl
// {\*\bkmkstart TEXT}[TEXT]{\*\bkmkend TEXT}
// {\*\bkmkstart SALUTATION}[SALUTATION]{\*\bkmkend SALUTATION}
local cM := memoread(cForm)
for x := 1 to len(aData)
cBase1 := "{\*\bkmkstart " + aData[x,1] + "}[" + aData[x,1] + "]"
cBase2 := "{\*\bkmkend " + aData[x,1] + "}"
cRepl := aData[x,2]
cM := strtran(cM,cBase1,cRepl)
cM := strtran(cM,cBase2,"")
next x
memowrit(cDest,cM)
WinAPIOpen(cDest)
return .t
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
- Martin Altmann
- Foren-Administrator
- Beiträge: 16555
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 116 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Rudolf,
sicherlich!
Ändere Deine RTF-Dokumente dahingehend, dass die Grafiken nicht eingebunden, sondern eingelinkt sind! Aber Achtung: Wann immer jemand die RTF-Datei versendet oder kopiert, muss er auch die eingebundenen Grafiken mitsenden!
Viele Grüße,
Martin
sicherlich!
Ändere Deine RTF-Dokumente dahingehend, dass die Grafiken nicht eingebunden, sondern eingelinkt sind! Aber Achtung: Wann immer jemand die RTF-Datei versendet oder kopiert, muss er auch die eingebundenen Grafiken mitsenden!
Viele Grüße,
Martin
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.
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo Martin,
danke für den Tip, aber ich glaube da gibts noch mehr Probleme. Die Textfelder werden auch nicht übernommen. In der RTF Vorlage sind sie aber noch drinnen. Ich sehe die Grafik auch als Binärdaten im RTF, aber sie werden nicht angezeigt. Werde mal weiter experimentieren, was bei der Bearbeitung verschwindet.
Grüsse
Rudolf
danke für den Tip, aber ich glaube da gibts noch mehr Probleme. Die Textfelder werden auch nicht übernommen. In der RTF Vorlage sind sie aber noch drinnen. Ich sehe die Grafik auch als Binärdaten im RTF, aber sie werden nicht angezeigt. Werde mal weiter experimentieren, was bei der Bearbeitung verschwindet.
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
-
- Rekursionen-Architekt
- Beiträge: 205
- Registriert: Mo, 07. Aug 2006 10:18
- Wohnort: Leipzig
- Danksagung erhalten: 11 Mal
Hallo Rudolf,
ich verwende ebenfalls RTF-Formulare, die ich via Programm mit Daten fülle und in Word anzeigen lasse. In den Formularen sind auch Grafiken enthalten. Mit diesen Grafiken hatte ich anfangs auch Probleme, bis ich die folgende Funktion zum Speichern der RTF-Datei verwendete:
Zum Ausfüllen verwende ich vollkommen simple Platzhalter:
<%artnr%>
<%lieferant%>
... die ich (oder der Anwender selbst) direkt in Word einfüge.
Dann im Programm:
Ich denke, so ähnlich machen es Alle, die mit RTF-Formularen arbeiten.
Tschüs,
Sören
ich verwende ebenfalls RTF-Formulare, die ich via Programm mit Daten fülle und in Word anzeigen lasse. In den Formularen sind auch Grafiken enthalten. Mit diesen Grafiken hatte ich anfangs auch Probleme, bis ich die folgende Funktion zum Speichern der RTF-Datei verwendete:
Code: Alles auswählen
FUNCTION MemoWrite( cFile, cText )
LOCAL lWritten := .F.
LOCAL nHandle, nBytes, lClose
nHandle := FCreate( cFile ) // Datei erzeugen
if nHandle != -1 // kein Fehler beim Anlegen der Datei
nBytes := FWrite( nHandle, cText ) // String in Datei schreiben
lClose := FClose( nHandle ) // Datei schliessen
// alle Bytes geschrieben und Datei geschlossen
if nBytes >= len( cText ) .and. lClose
lWritten := .T.
endif
endif
RETURN lWritten
<%artnr%>
<%lieferant%>
... die ich (oder der Anwender selbst) direkt in Word einfüge.
Dann im Programm:
Code: Alles auswählen
cRTF := MemoRead( "Test.RTF" )
cRTF := StrTran( cRTF, "<%artnr%>", artikel->artnr )
MemoWrite( "Test1.RTF", cRTF )
Tschüs,
Sören
- brandelh
- Foren-Moderator
- Beiträge: 15707
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 71 Mal
- Danksagung erhalten: 38 Mal
- Kontaktdaten:
Hallo,
ich habe mit RTF zwar noch nicht gearbeitet, aber wenn die Dokumente nach dem Speichern mit memowrit() Probleme haben, die mit der eigenen Funktion memowrite() nicht vorkommen, dann muss es wohl daran liegen, dass memowrit() nicht nur den Text speichert, sondern auch noch ein chr(26) (Dateiende) anhängt.
Deshalb verwende ich auch meine eigene Funktion.
ich habe mit RTF zwar noch nicht gearbeitet, aber wenn die Dokumente nach dem Speichern mit memowrit() Probleme haben, die mit der eigenen Funktion memowrite() nicht vorkommen, dann muss es wohl daran liegen, dass memowrit() nicht nur den Text speichert, sondern auch noch ein chr(26) (Dateiende) anhängt.
Deshalb verwende ich auch meine eigene Funktion.
Gruß
Hubert
Hubert
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo,
hab das ganze jetzt nochmal probiert, wenn man eine Grafik einbindet, hängt sich das ganze beim Speichern total auf. Kann man nur mehr mit dem Taskmanager abbrechen. Ohne Grafik funktioniert es. Wie kann ich eigentlich eine Grafik einbinden, ohne dass sie direkt im Dokument ist ?
Grüsse
Rudolf
hab das ganze jetzt nochmal probiert, wenn man eine Grafik einbindet, hängt sich das ganze beim Speichern total auf. Kann man nur mehr mit dem Taskmanager abbrechen. Ohne Grafik funktioniert es. Wie kann ich eigentlich eine Grafik einbinden, ohne dass sie direkt im Dokument ist ?
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9394
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 104 Mal
- Danksagung erhalten: 364 Mal
- Kontaktdaten:
Hallo, Rudolf.
RTF bettet Grafiken immer ein. Der Trick bei solchen Dokumentenformaten besteht ja darin, nur ein Dokument zu erzeugen. RTF beherrscht allerdings auch Hyperlinks, aber das ist ein anderes Thema.
MemoWrit() hängt Chr(26) an, was aber - ich habe es gerade ausprobiert - nicht wirklich ein Problem sein sollte. Ich speichere Daten mit StrFile() aus den Xbase-Tools, und das ging bisher immer problemlos, auch bei Dateigrößen > 20 MB.
RTF bettet Grafiken immer ein. Der Trick bei solchen Dokumentenformaten besteht ja darin, nur ein Dokument zu erzeugen. RTF beherrscht allerdings auch Hyperlinks, aber das ist ein anderes Thema.
MemoWrit() hängt Chr(26) an, was aber - ich habe es gerade ausprobiert - nicht wirklich ein Problem sein sollte. Ich speichere Daten mit StrFile() aus den Xbase-Tools, und das ging bisher immer problemlos, auch bei Dateigrößen > 20 MB.
Herzlich,
Tom
Tom
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo Tom,
habe ein Beispiel zusammengestellt mit einem RTF Dokument und Logo drin. Da sieht man wie sich die Funktion memowrite() aufhängt. Ich habe das Beispiel auf www.c-tec.at/download/test.zip liegen, vielleicht hat jemand Zeit und Lust sich das mal anzusehen. Wäre super wenn das Problem gelöst werden könnte.
Grüsse
Rudolf
habe ein Beispiel zusammengestellt mit einem RTF Dokument und Logo drin. Da sieht man wie sich die Funktion memowrite() aufhängt. Ich habe das Beispiel auf www.c-tec.at/download/test.zip liegen, vielleicht hat jemand Zeit und Lust sich das mal anzusehen. Wäre super wenn das Problem gelöst werden könnte.
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net
- Rudolf
- Programmier-Gott
- Beiträge: 1418
- Registriert: Mo, 02. Jan 2006 23:03
- Wohnort: Salzburg/Österreich
- Kontaktdaten:
Hallo Tom,
danke fürs Teste, muss das ganze wohl auf einem anderen Rechner probieren. Bei meinen Kunden hat sich das ganze auch total aufgehängt, eigenartig. Aber ich bin schon mal beruhigt, dass es bei Dir funktioniert.
Grüsse
Rudolf
danke fürs Teste, muss das ganze wohl auf einem anderen Rechner probieren. Bei meinen Kunden hat sich das ganze auch total aufgehängt, eigenartig. Aber ich bin schon mal beruhigt, dass es bei Dir funktioniert.
Grüsse
Rudolf
Rudolf Reinthaler
http://www.formcommander.net
http://www.formcommander.net