Imprimir de un form a word

Hola me podrían ayudar necesito saber como le hago para imprimir directo de un formulario sin tener que realizar un reporte yasea que en el form ponga un botón de imprimir y este me mande la información ya sea a word o excel me podría a yudar por favor trabajo con vfp6
Saludos de antemano gracias mi correo es [email protected]

1 Respuesta

Respuesta
1
Si quieres enviar tus datos a excel o word debes usar automatización, al menos excel tiene más opciones, puedes usar tranquilamente un export así.
Use clientes
export to c:\lista  type XLS
O automatización, te doy un código que hice, es una función al cual le envías como parámetro el alias y el titulo del informe y trae en excel. Así.
=xExcel("clientes","Listado de Clientes")
proce xExcel
lparameter xAlias,xTitulo
*Crea una planilla de calculos de Excel con la tabla enviada.
*Parametros : xAlias -> alias a detallar
* : xTitulo -> titulo del informe
*Autor : Pedro David Ovando
*Empresa : Divesur SA
*----------------------------------------------------------------------------------------*
#DEFINE APPSHOW_WORDUS_LOC "appshow"
#DEFINE FILENEW_WORDUS_LOC "filenewdefault"
#DEFINE INSERT_WORDUS_LOC 'insert("Este es su gráfico!")'
#DEFINE EDITPASTESPECIAL_WORDUS_LOC "editpastespecial(,,,,'PICT')"
#DEFINE OBJECT_TYPE "OBJECT"
APPSHOW_WORDUS =APPSHOW_WORDUS_LOC
FILENEW_WORDUS =FILENEW_WORDUS_LOC
INSERT_WORDUS =INSERT_WORDUS_LOC
EDITPASTESPECIAL_WORDUS =EDITPASTESPECIAL_WORDUS_LOC
PUBLIC ObjWDdoc
wait wind "Creando hoja de cálculo de Excel...." nowait
xAliass = alias()
objXLsheet=CreateObject("Excel.Sheet")
objXLsheet.application.visible=.T.
IF UPPER(objXLsheet.Name)=OBJECT_TYPE
lHasExcel97 = .T.
objXLsheet = objXLsheet.Sheets[1]
ELSE
lHasExcel97 = .F.
ENDIF
Wait wind "Poniendo información de la consulta en la hoja de cálculo..." nowait
*** Titulo cabecera
objXLsheet.Cells(1,1).Value = xTitulo
xRango = "xRango = ASC('A')+"+"fcount('"+xAlias+"')"
&xRango
xRango = "A1:"+alltr(chr(xRango))+"1"
objXLsheet.RANGE(xRango).Merge
for c=1 to fcount(xAlias)
objXLsheet.Cells(2,c).Value = field(c)
xDato=FIELD(c)
xDato=&xDato
if type(field(c))='C'
objXLsheet.Columns(CHR(64+C)).ColumnWidth = LEN(xDato)
else
objXLsheet.Columns(CHR(64+C)).ColumnWidth = 15
endif
endfor
xRango = "xRango = ASC('A')+"+"fcount('"+xAlias+"')"
&xRango
xRango = "A2:"+alltr(chr(xRango))+"2"
objXLsheet.Range(xRango).Interior.Color = RGB(220,220,220) && RGB(192,192,192) && Light Gray
k=2
sele (xAlias)
do while !eof()
k=k+1
for c=1 to fcount(xAlias)
xDato=FIELD(c)
xDato=&xDato
if type('xDato')='C'
objXLsheet.Cells(k,c).Value = "'"+xDato
else
if type('xDato')='D'
objXLsheet.Cells(k,c).Value = "'"+dtoc(xDato)
else
objXLsheet.Cells(k,c).Value = xDato
Endif
Endif
Endfor
Skip
Enddo
if !empty(xAliass)
Se le (xAliass)
Endif
Messagebox('Proceso Concluido, guarde una copia de su hoja de Cálculo ANTES de presionar Aceptar', 55, xSistema)
Es el principio amigo.
No le entendí muy bien al código mi form se llama ventas y tengo información de otros forms y necesito imprimir esa información capturada en el form ventas lo de alias y titulo No le entendí y copie este código que me envío y me dice que no acepta que no puede contener eventos o métodos de clases anidadas gracias
Espero y me entienda lo que necesito
Esta función que te envíe no puedes usarlo en un form, debes crear un prg,
Modi comm xexcel
Pegas ahi todo el codigo y listo, con respecto a lo que quieres imprimir no entendi bien tampoco, que dato es lo que quieres imprimir, cuando hablas de capturar datos en un form de ventas que es lo que capturas, datos que luego lo metes en un cursor o tabla (seria el alias), el titulo es lo que quieres que lleve como titulo tu informe, ahora, no tiene sentido capturar informacion y no guardarlo e imprimirlo, esa parte no entendi, seguramente guardas los datos en algun cursor o tabla, y eso lo envias a la funcion que te di, si me das mas ejemplos tal vez te entienda mejora amigo,
un saludo
Se guarda en una tabla llamada ventas
alo que me refiero a capturar tengo varios campos en el formulario que lleno antes de guaradra la información los campos que tengo son
clavecliente claveventa claveproducto fechaventa cantidd precio total letra
Ah entiendo, entonces genial, haces esto
=xExcel("ventas","Listado de ventas")
Y listo, o bien
Se le ventas
Go top
export to misVentas type XLS
Algo por el estilo, recuerda que lo que imprimes siempre es un cursor o tabla, no el form.
Gracias por el código es para excelv vdd
El de word como seria muchas gracias me sirvió mucho el otro
Para word es lo mismo, automatización, por ejemplo te hago aquí un pequeño ejemplo de como escribir en word.
#DEFINE APPSHOW_WORDUS_LOC "appshow"
#DEFINE FILENEW_WORDUS_LOC "filenewdefault"
#DEFINE INSERT_WORDUS_LOC 'insert("Hola mundo")'
#DEFINE OBJECT_TYPE "OBJECT"
**** Define tokenized Word 6.0 commands, since Word 6.0 does not
**** English Automation commands.
APPSHOW_WORDUS =APPSHOW_WORDUS_LOC
FILENEW_WORDUS =FILENEW_WORDUS_LOC
INSERT_WORDUS =INSERT_WORDUS_LOC
PUBLIC ObjWDdoc
objWDdoc=crea("word.basic")
objwddoc.&APPSHOW_WORDUS &&added 8/17 for Word 7.0 support
objwddoc.&FILENEW_WORDUS
objwddoc.&INSERT_WORDUS
Hay mucha documentación sobre esto en fox, especialmente en la ayuda, por ejemplo el form solution. Scx que viene con código fuente, yo en mi caso que trabajo con vfp6 lo tengo en
C:\ARCHIVOS DE PROGRAMA\MICROSOFT VISUAL STUDIO\MSDN98\98VSA\3082\SAMPLES\VFP98\SOLUTION\SOLUTION.SCX
Ahí encontraras de todo para automaización.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas