FoxPro/Visual FoxPro - vpf9 con word

 
Vista:
sin imagen de perfil
Val: 29
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

vpf9 con word

Publicado por Richard antonio (197 intervenciones) el 01/10/2014 18:18:07
Amigos mi cliente quiere un documento q tiene en word le pase datos de vfp ya que quiere mandar unos memoriales.
Agradezco su ayuda y si tienen un ejemplo mejor
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de William
Val: 7
Ha aumentado su posición en 4 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

vpf9 con word

Publicado por William (11 intervenciones) el 01/10/2014 20:31:47
hola Richard

si lo que deseas es solo imprimir, lo puedes hacer usando el excel,
osea tu tabla de fox lo puedes convertir en archivo de excel y utilizando ciertos comando de excel puedes crear el formato de word.
o desde fox puedes crear un informe que llame a tu tabla y le das el diseño de tu archivo en word

cualquiera de las dos opciones son aceptables

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

vpf9 con word

Publicado por Ernesto (4623 intervenciones) el 14/10/2014 17:55:09
checa esto

CLOSE all



#DEFINE _DOCUMENTO "d:\ut\mailing.doc"



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 d:\ut\mail50 IN 0 ALIAS mail50



SCAN FOR EMPTY(email) 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, "<<nombre>>",mail50.nombre )

lfBuscaReplaCadena(loWord.Selection, "<<direcc1>>",mail50.direcc1 )

lfBuscaReplaCadena(loWord.Selection, "<<direcc2>>",mail50.direcc2 )

lfBuscaReplaCadena(loWord.Selection, "<<poblacion>>",mail50.poblacion )

loWord.Visible = .t.

loWord.printout()

wait "Imprimiendo..." window at 15,40 timeout 5

loWord.documents().close(.f.)

ENDSCAN



loWord.quit(.f.)



RETURN





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 respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

vpf9 con word

Publicado por Ernesto (4623 intervenciones) el 14/10/2014 17:55:54
Te envio el link

http://www.fpress.com/revista/num0506/art.htm



Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alexander

vpf9 con word

Publicado por Alexander (10 intervenciones) el 28/01/2016 03:43:47
Buenas, yo estoy armando y usando tu codigo me funciona de lujo, pero ahora me surgio el tema de que a parte de reemplazar los campos texto tengo que reemplazar en el word imagenes, que me cargan en el formulario en mi tabla solo guardo la direccion de la imagen.
Hay forma o tengo que incrustar la imagen en alguna campo general o como puedo hacer algo similar al texto, buscando los campos <<campo>> y reemplazo por valor de mi tabla dbf. Te adjunto mi tema para tener una mejor idea.
Chequa el boton imprimir:

Adjunto proyecto en desarrollo en V. fox 8. !

Gracias.

Alex.

Fuente:
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
*** Boton: Imprimir ***
 
*CLOSE all
#DEFINE _DOCUMENTO    "o:\reportes\reporte_cabos.doc"
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
SCAN FOR !EMPTY(ccabos.nrofardo) AND RECNO() < 2
    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, "<<descprov>>",			ccabos.descprov )
    lfBuscaReplaCadena(loWord.Selection, "<<descespe>>",			ccabos.cespecif )
    lfBuscaReplaCadena(loWord.Selection, "<<analvisual>>",			ALLTRIM(ccabos.direcciv) + ALLTRIM(ccabos.nombrev) )
    lfBuscaReplaCadena(loWord.Selection, "<<obs_analvisual>>",		ccabos.obscortv )
    lfBuscaReplaCadena(loWord.Selection, "<<obs_anal_olfcolor>>",	ccabos.olfcolor )
    lfBuscaReplaCadena(loWord.Selection, "<<tituloglobalpro>>",		ccabos.titglopr )
    lfBuscaReplaCadena(loWord.Selection, "<<titulofilamentopro>>",	ccabos.titdenpr )
    lfBuscaReplaCadena(loWord.Selection, "<<humedad>>",				ccabos.humedad )
    lfBuscaReplaCadena(loWord.Selection, "<<compac_ini>>",			ccabos.compacmi )
    lfBuscaReplaCadena(loWord.Selection, "<<compac_fin>>",			ccabos.compacma )
    lfBuscaReplaCadena(loWord.Selection, "<<analrizado>>",			ALLTRIM(ccabos.direccir) + ALLTRIM(ccabos.nombrer) )
    lfBuscaReplaCadena(loWord.Selection, "<<obs_analrizado>>",		ccabos.obscortr )
    lfBuscaReplaCadena(loWord.Selection, "<<lab_ace>>",				ccabos.labactar )
    lfBuscaReplaCadena(loWord.Selection, "<<lab_tria>>",			ccabos.labtriar )
    lfBuscaReplaCadena(loWord.Selection, "<<analtransv>>",			ALLTRIM(ccabos.direccion) + ALLTRIM(ccabos.nombre) )
    lfBuscaReplaCadena(loWord.Selection, "<<obs_analtransv>>",		ccabos.obscortt )
    lfBuscaReplaCadena(loWord.Selection, "<<jnpr>>",				ccabos.rizajnpr )
    lfBuscaReplaCadena(loWord.Selection, "<<jncv>>",				ccabos.rizajncv )
    lfBuscaReplaCadena(loWord.Selection, "<<jnma>>",				ccabos.rizajnma )
    lfBuscaReplaCadena(loWord.Selection, "<<jnmi>>",				ccabos.rizajnmi )
    lfBuscaReplaCadena(loWord.Selection, "<<jpr>>",					ccabos.rizajpr )
    lfBuscaReplaCadena(loWord.Selection, "<<jcv>>",					ccabos.rizajcv )
    lfBuscaReplaCadena(loWord.Selection, "<<jma>>",					ccabos.rizajma )
    lfBuscaReplaCadena(loWord.Selection, "<<jmi>>",					ccabos.rizajmi )
    lfBuscaReplaCadena(loWord.Selection, "<<jwpr>>",				ccabos.rizajwpr )
    lfBuscaReplaCadena(loWord.Selection, "<<jwcv>>",				ccabos.rizajwcv )
    lfBuscaReplaCadena(loWord.Selection, "<<jwma>>",				ccabos.rizajwma )
    lfBuscaReplaCadena(loWord.Selection, "<<jwmi>>",				ccabos.rizajwmi )
    lfBuscaReplaCadena(loWord.Selection, "<<jdpr>>",				ccabos.rizajdpr )
    lfBuscaReplaCadena(loWord.Selection, "<<jdcv>>",				ccabos.rizajdcv )
    lfBuscaReplaCadena(loWord.Selection, "<<jdma>>",				ccabos.rizajdma )
    lfBuscaReplaCadena(loWord.Selection, "<<jdmi>>",				ccabos.rizajdmi )
 
	*******
	* 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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alexander

vpf9 con word

Publicado por Alexander (10 intervenciones) el 29/01/2016 03:07:13
Bueno agrego otro comentario donde paso como incrustar una imagen en word usando un metodo
OBS.: como ubicar las imagenes ok, fue un tema, entonces en mi Word cree 4 tablas, donde cada imagen tenia 1 obs abajo.
ok entonces al insertar con el metodo le digo en que tabla ponerla y donde defino cuando llamo el metodo fijense el ultimo
valor enviado al metodo imagen 1 a la tabla 1, imagen 2 a la tabla 2 y por ultimo imagen 3 a la tabla 4, entonces la tabla 3 del word queda intacta con otro valores que no son imagenes. adjunto diseño final

Espero les ayude este tema que me llevo dos dias. de investigacion.

Saludos.

Alex..

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
THISFORM.fox_to_word('o:\imagenes\' + ALLTRIM(ccabos.nombrev), loDoc, loWord, 1)
THISFORM.fox_to_word('o:\imagenes\' + ALLTRIM(ccabos.nombrer), loDoc, loWord, 2)
THISFORM.fox_to_word('o:\imagenes\' + ALLTRIM(ccabos.nombre), loDoc, loWord, 4)
 
PROCEDURE fox_to_word
  PARAMETERS mimagen, loDoc, loWord, nro_pagina
  lcPictureFile = mimagen
  LOCAL loTable as Word.Table
  loTable = m.loDoc.Tables(nro_pagina)
  loTable.Cell(1,1).Select
  loWord.Selection.TypeParagraph()
  loWord.Selection.InlineShapes.AddPicture(lcPictureFile, .F., .T.)
  loTable.Cell(1,1).Range.InlineShapes.Item(1).Height = 150
  loTable.Cell(1,1).Range.InlineShapes.Item(1).Width  = 200
RETURN
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 29
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

vpf9 con word

Publicado por RICHARD ANTONIO (197 intervenciones) el 10/06/2019 19:26:16
hola alexander te cuento que implemente el codigo para hacer las cartas desde vfp9 me funciona super bien con word 2010 pero al usar word 2013 me sale un erro y me imprime es la carta sin los reemplazo. cualquier ayuda gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

vpf9 con word

Publicado por Alexander (10 intervenciones) el 13/04/2022 16:18:31
Bueno cuando estaba probando el proceso tenia versiones anteriores de Office, pero con las nuevas daba problema, entonces tuve que agregar una verificación de versión, y si la versión es menor a la 16 uso archivos con extensión .doc, y con las superiores la extensión .dot y allí corre sin problemas el mismo proceso, paso solo la parte donde fue ajustada.

loword = CREATEOBJECT('Word.Application')
mVersion_Word = VAL(loword.Version)
loword = .NULL.
IF mVersion_Word < 16 THEN
mextension = 'doc'
ELSE
mextension = 'dot'
ENDIF

IF mop = 1 THEN
thisform.a_word(mdireccion + "\certificado_medico." + mextension, 1)
ENDIF

IF mop = 2 THEN
mop2 = THISFORM.container4.pageframe1.page3.optiongroup1.value
IF mop2 = 1 THEN
thisform.a_word(mdireccion + "\justificativo_paciente." + mextension, 2)
ELSE
thisform.a_word(mdireccion + "\justificativo_acompanante." + mextension, 3)
ENDIF
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

vpf9 con word

Publicado por luis gonzalez duran (1 intervención) el 26/06/2020 02:49:24
soy nuevo con visual fox
copie el codigo y lo intente correr pero me marca error en lfBuscaReplaCadena si cambio el nombre de la base de datos y el nombre del campo
pero si no cambio el nombre de la base de datos ni el campo no me marca error --- lfBuscaReplaCadena pero no me hace nada

alguien me podria ayudar3
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

vpf9 con word

Publicado por Alexander (10 intervenciones) el 13/04/2022 16:21:23
Puede ser por dos motivos, por la versión del office que tengas, si es eso verifica antes y guarda como .dot tu archivo de word, sino puede ser porque la variable del word no coincide con algunas de las que envías desde fox...
Si es lo primer fija el comentario anterior allí esta la rutina.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar