Correspondencia combinada , como cerrar el archivo de la plantilla.

56 views
Skip to first unread message

Rodribezul

unread,
Jan 16, 2017, 8:08:12 PM1/16/17
to Comunidad de Visual Foxpro en Español
Cuando se esta generando combinación de correspondencia hay un archivo plantilla y un archivo destino .   Siempre se me abre ambos archivos.
El archivo destino con la información combinada que necesita el usuario y el archivo plantilla . Necesito cerrar el archivo plantilla o dejarlo invisible.
Gracias

SELECT DATOSCOMBINAR
REPLACE FIDEICOMISO    WITH LcFiducia,;
  NUMERODEPAGO    WITH TRANSFORM(M.MOVGEN.NUMERO_CPB),;
  FECHAPAGO       WITH FECHA_LETRAS(M.VFP_FECHAGIRO) ,;
  VALORPAGOLETRAS   WITH LcMonto1,;
  VALORPAGONUMERO   WITH ALLTRIM(LcMonto2),;
  PROVEEDOR         WITH ALLTRIM(m.vfp_benef),;
  NITPROVEEDOR   WITH ALLTRIM(terceros.ter_nits),;
  CONCEPTO     WITH LcConcepto ,;
  BANCODESTINO    WITH ALLTRIM(LcEntidad) ,;
  TIPOCTA     WITH LcTipoCta,;
  NUMEROCTA    WITH LcCuenta,;
  CTA1      WITH CTAS(1,1),;
  CTA2     WITH CTAS(2,1),;
  CTA3     WITH CTAS(3,1),;
  NOM1      WITH CTAS(1,2),;
  NOM2     WITH CTAS(2,2),;
  NOM3     WITH CTAS(3,2),;
  COS1     WITH CTAS(1,3),;
  DETALLEFACTURAS1  WITH LcDetalleFacturas1,;
  DETALLEFACTURAS2  WITH LcDetalleFacturas2
  
  
  
  
 
LcArchivoCombinar = s_p_inicio+"temporal\datoscombinar"
COPY TO &LcArchivoCombinar TYPE CSV

LcDirWord =  s_p_empres +ALLTRIM(s_dir_apl) + "Wor"
LcArchivo = "PLANTILLAMEMOPAGO1.DOC"
 
LcPlantilla = LcDirWord+"\"+LcArchivo
  

LcDestino   = ADDBS(GETENV('WINDIR')) + "TEMP\" + "TWORD" + SUBSTR(SYS(2015),3,8) + ".DOC"
LcPath      = ADDBS(GETENV('WINDIR')) + "TEMP"
COPY FILE (LcPlantilla) TO (LcDestino)
LcArchivoCombinar = FORCEEXT(LcArchivoCombinar,'CSV')

loWord = CREATEOBJECT("Word.Application")
loword.Visible= .F.
LoDoc = loWord.Documents.Open(LcDestino) 
loDoc.MailMerge.MainDocumentType = -1
WITH loDoc.MailMerge
      .MainDocumentType = 0  && wdFormLetters
      .OpenDataSource(LcArchivoCombinar)
      .Execute()
ENDWITH

 WITH LoWord
      .ChangeFileOpenDirectory(LcPath)
      .WINDOWSTATE = 1 
      .VISIBLE = .T. 
 ENDWITH


***loWord.Documents.close(1)

RELEASE LOWORD

HernanCano

unread,
Jan 17, 2017, 2:11:29 AM1/17/17
to Comunidad de Visual Foxpro en Español
Rodri:

1.
Parece que no te entiendo:

Parece que te estás refiriendo al archivo PLANTILLAMEMOPAGO1.DOC cuando dices: "Necesito cerrar el archivo plantilla o dejarlo invisible",..... pero en el código que muestras ese archivo no se abre con Word.

¿Por qué dices que quieres cerrarlo? ¿Te está apareciendo un mensaje de error? ¿Cuál?


2.
El archivo que se está abriendo (según el código que expones) es el TWORD*********.DOC en el dir temporal del sistema operativo. ¿Es ése al que te refieres? ¿Es ése el que quieres "cerrar"?

Si es así, entonces lo que necesitas es algo similar a lo que está comentado antes del RELEASE LOWORD..... pero debes corregir según lo que te indico a continuación....


3.
Tal vez el (1) debes reubicarlo, pues veo en tu comentario...

***loWord.Documents.close(1)

que tienes mal ubicado el (1)....

4.
Te recomiendo que en vez de 

LcDestino   = ADDBS(GETENV('WINDIR')) + "TEMP\" + "TWORD" + SUBSTR(SYS(2015),3,8) + ".DOC"
LcPath      = ADDBS(GETENV('WINDIR')) + "TEMP"

utilices

lcPath      = addbs(sys(2023))
lcDestino   = lcPath + "TWORD" + sys(2015) + ".DOC"

¿Me aclaras tu motivación para hacer SUBSTR(---,3,8)? Gracias.
----------------------------
Intenta y nos cuentas.....

Rodribezul

unread,
Jan 19, 2017, 4:26:35 PM1/19/17
to Comunidad de Visual Foxpro en Español

Gracias por su sugerencia.   Ese código lo tenia de hace como 10 años y no le había vuelvo a analizar .

El problema que se me presenta es que para la correspondencia combinada uso un archivo plantilla y al enviar las ordenes me abre este mas el nuevo archivo que se genera con los datos correspondientes en el nuevo archivo de word.  Pero el usuario se molesta por que siempre le presento dos archivos el que realmente necesita imprimir todo correcto con sus datos y el archivo plantilla .

Saludos

Rodribezul

unread,
Jan 19, 2017, 6:15:23 PM1/19/17
to Comunidad de Visual Foxpro en Español


Resuelto con la sugerencia que me dio hernan cano..


loWord.documents(2).CLOSE(.F.)
loWord = .NULL.
RELEASE loWord

Saludos




El lunes, 16 de enero de 2017, 20:08:12 (UTC-5), Rodribezul escribió:
Reply all
Reply to author
Forward
0 new messages