FoxPro/Visual FoxPro - vpf9 con word

   
Vista:

vpf9 con word

Publicado por Richard antonio (174 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

vpf9 con word

Publicado por William wgb777@yahoo.com (9 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

vpf9 con word

Publicado por Ernesto (4632 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

vpf9 con word

Publicado por Ernesto (4632 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 (8 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 (8 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