word con vfp solo funciona cor word 2010
Publicado por RICHARD ANTONIO (199 intervenciones) el 09/06/2019 14:58:15
Hola amigos del foro hace unos meses pedí su ayuda para utilizar vfp con word esto por que un cliente me pidió que quería mandar cartas con datos directamente de la aplicación y hacer facil este proceso de hacer cartas y buscar el cliente tomar los datos que necesita y era una demora.
con el codigo que me mandaron hice las modificación en código que era llamar la tabla y los campos de remplazo aqui esta el codigo:
Pero el problema que solo funciona con word 97 y 2010 perfectamente
Cuando utilizo word 2013 me sale error
solicito su ayuda para poder utilizarlo con los word mas reciente

con el codigo que me mandaron hice las modificación en código que era llamar la tabla y los campos de remplazo aqui esta el codigo:
Pero el problema que solo funciona con word 97 y 2010 perfectamente
Cuando utilizo word 2013 me sale error
solicito su ayuda para poder utilizarlo con los word mas reciente

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
*************
lCcarta = ALLTRIM(thisform.sqleditbox1.Value)
#DEFINE _DOCUMENTO lCcarta
LOCAL loWord, loDocument
*- Crea referencia a Word
TRY
loWord = GETOBJECT(,'Word.Application')
CATCH
loWord = CREATEOBJECT('Word.Application')
ENDTRY
IF VARTYPE(loWord) <> 'O'
ERROR 'No se ha podido crear una referencia a WORD'
RETURN .F.
ENDIF
*---------------------------------
* Abre el documento como ReadOnly
*---------------------------------
*USE c:\rh2\func_contrato.dbf SHARED && IN 0 ALIAS func_contrato
*SELECT ccabos
****
LCcu1 = "SELECT inup,nomcliente,nomcontra,nomjuzgado,nradica,nomciudad,nitcontra,nomproceso from tdata_t001"
* and codabop = ?m.PvNitCC"
lcrdo1 = SQLEXEC (gn1,lcCu1,"cur_dt001")
if lcrdo1 < 0
Aerror(verror)
* wait window 'Error '+
mMens2 = verror(2)
=SQLRollback(gn1)
mMens1="No se Puede completar la Operación "
mOpc = messagebox(mMens1 + mMens2,0+32,"Atencion")
return
ENDIF
**************
******
SCAN FOR !EMPTY(cur_t001.inup) AND RECNO() < 20
TRY
loDocument = loWord.Documents.Open(_DOCUMENTO,,.T.)
CATCH
*- Cierra instancia de Word
IF VARTYPE(loWord) = 'O'
loWord.Application.Quit(0) && Sale sin salvar y sin preguntar
loWord = .NULL.
ENDIF
ERROR 'No se ha podido abrir el documento "' + _DOCUMENTO + '".'
ENDTRY
*******************
lfBuscaReplaCadena(loWord.Selection, "<<juzgado>>", cur_dt001.nomjuzgado )
lfBuscaReplaCadena(loWord.Selection, "<<ciudad>>", cur_dt001.nomciudad )
lfBuscaReplaCadena(loWord.Selection, "<<proceso>>", cur_dt001.nomproceso )
lfBuscaReplaCadena(loWord.Selection, "<<cliente>>", ALLTRIM(cur_dt001.nomcliente ))
lfBuscaReplaCadena(loWord.Selection, "<<ctparte>>", ALLTRIM(cur_dt001.nomcontra ))
lfBuscaReplaCadena(loWord.Selection, "<<nit>>", cur_dt001.nitcontra )
lfBuscaReplaCadena(loWord.Selection, "<<radicado>>",cur_dt001.nradica )
*****
* Buscar texto o imagen y reemplazar por otra imagen
*******
loWord.Visible = .t.
loWord.printout()
wait "Imprimiendo..." window at 15,40 timeout 5
loWord.documents().close(.f.)
ENDSCAN
loWord.quit(.f.)
RETURN
*********************
esta es la funcion de remplazo
**************************
FUNCTION lfBuscaReplaCadena
LPARAMETERS poSelection, pcValueToFind, pcValueToReplace
*--------------------------------------------------------
*- Busca una cadena y la reemplaza por otra
*-
*- Parametros:
*- poSelection Referencia a la selección a buscar.
*- Ej. oWord.Selection
*- pcValueToFind Valor a buscar
*- pcValueToReplace Valor a reemplazar
*-
*- Devuelve:
*- .t. Si ha podido reemplazar todo
*- .f. Si NO ha podido reemplazar
*-
*--------------------------------------------------------
LOCAL llReturn
llReturn = .t.
TRY
WITH poSelection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = pcValueToFind
.Replacement.Text = pcValueToReplace
.Forward = .T.
.Wrap= 1
.Execute(,,,,,,,,,,2)
ENDWITH
************
CATCH TO nError
llReturn = .f.
THIS.cDescUltError = 'Ha ocurrido un error en el proceso de reemplazo de texto'
ENDTRY
RETURN (llReturn)
***********************************
Valora esta pregunta


0