Page 1 of 1

TWord y errores aleatorios

Posted: Tue Jun 03, 2008 4:37 pm
by Manuel Aranda
Estoy usando la clase TWORD para fusión de correspondencia y a veces se produce este error (no siempre) cuando evito usar oWord:Visualizar():
Error description: Error Word.Application/16389 E_FAIL: DOCUMENTS
Args:

Stack Calls
===========
Called from: win32ole.prg => TOLEAUTO:DOCUMENTS(0)
Called from: => HB_EXECFROMARRAY(0)
Called from: win32ole.prg => TOLEAUTO:GET(397)
Called from: tword.prg => TWORD:OPENDOC(429)
Called from: socios.prg => FUSIONWORD(1140)
Aquí dejo el trozo de código que uso por si alguien me puede ayudar:

Code: Select all

IF FILE (cRutaDoc)
   //
   FOR nRecorre:= 1 TO len(aSele)
      cBusca:=aSele[nRecorre]
      (cUsaBase)->(DbGoTo(cBusca))
      //
      cNombre   = (cUsaBase)->Nombre
      cDomicilio= (cUsaBase)->Domicilio
      cCLP      = (cUsaBase)->CPostal+"-"+ALLTRIM((cUsaBase)->LOCALIDAD)+" ("+ALLTRIM((cUsaBase)->PROVINCIA)+")"
      //
      oWord := Tword():New()
      oWord:OpenDoc(cRutaDoc)
      //
      IF lPreWord
          oWord:Visualizar()
      ENDIF
      //
      oWord:Replace("[NOMBRE]",cNombre)
      oWord:Replace("[DOMICILIO]",cDomicilio)
      oWord:Replace("[CPOSTALYLOCALIDAD]",cCLP)
      //
      oWord:PrintDoc()
      oWord:End(.F.)
      //
   END FOR
  //
ELSE
  MsgStop("Debe de elegir un documento de WORD")
ENDIF
//

Posted: Tue Jun 03, 2008 6:21 pm
by Kleyber
Hola Manuel,

Una pregunta: por que estas poniendo este if

Code: Select all

     IF lPreWord 
          oWord:Visualizar() 
      ENDIF 
Antes de los REPLACEs? No deberia ser después?

Saludos,

Posted: Tue Jun 03, 2008 6:37 pm
by Manuel Aranda
Hola Kleyber:

Con lPreWord determino si quiero previsualizar el documento o no. Si lPreWord es .T. entonces se previsualiza el documento y se ve como se van haciendo los REPLACE y después se imprimen sin problema tantos documentos como registros hay en aSele.
En cambio si lPreWord es .F. (no se previsualiza el documento) el primer documento se imprime correctamente, pero en alguno de los siguientes da el error mencionado.

Gracias.

Posted: Tue Jun 03, 2008 6:54 pm
by ADBLANCO
DISCULPA, (tirandola a pegar)

No será que algún documento no existe???

No sería bueno preguntar por la existencia del documento en el disco antes de proceder??

No se, es solo un pálpito


Suerte

Posted: Tue Jun 03, 2008 8:14 pm
by Manuel Aranda
Angel:

El documento es único y lo fusiono con varios registros (tres registros, tres copias del mismo documento pero con distintos datos) y ya se determina si existe en la primera linea: IF FILE (cRutaDoc)