Página 1 de 1

[RESUELTO]Combinacion de Correspondencia por códig

Publicado: Mié Oct 02, 2019 9:52 pm
por Preguntar-Responder
Intento hacer una combinación de correspondencia. Para ello tengo un documento de texto (Carta Comb) con campos de una base de datos (Base Datos Texto₁). Ejecuto el código (copiado de este foro, únicamente cambiado con los documentos y la base de datos) para hacer la combinación de correspondencia, pero me da el siguiente error: (el error aparece en al ejecutar la línea marcada)

Error de ejecución de BASIC.
'1'

Type: com.sun.star.uno.RuntimeException
Message: Failed to create document from URL: file:///C:%5CUsers%5CLuis%5CDocuments%5CCarta%20Comb.odt

El código que ejecuto es el siguiente:

Código: Seleccionar todo

Sub MailMerge1 ()
       ' Adaptado de Xabin
       '---------------------------------------------------------------
       ' 1º Declaramos las variables
       Dim OutputURL as String
       Dim noOpt() As Object, oText As Variant, oCurs As Object, RDescrip  As Variant
       Dim sRuta As String, oRuta As String, dRuta As String, LineSpace As Variant
       Dim mOpciones(0) As New "com.sun.star.beans.PropertyValue"
       Dim oDoc As Object, objMailMerge As Object
       Dim document   as object, dispatcher as object
       '-------------------------------------------------------------------
       ' 2º Determinamos las rutas que nos interesan
       
       oRuta= convertToURL("file:///C:\Users\Luis\Documents\Carta Comb.odt")
       
       dRuta= ConvertToURL("file:///C:\Users\Luis\Documents\SOBRE BLANCO COMBINADO.odt")
    
      
      MsgBox oRuta
       '---------------------------------------------------------------------------------
       ' 3º Nos aseguramos de no tener más de un documento
       OutputURL="file:///C:\Users\Luis\Documents\Carta Comb .odt"
       If FileExists(dRuta + "/temp0.odt") Then                                 ' Si existe el documento
       kill dRuta + "/temp0.odt"                                                ' Lo eliminamos
       End If                                                                   ' Acabamos la condición
       '-------------------------------------------------------------------------------------
       ' 4º Establecemos el origen de datos y creamos el servicio       
    
       objMailMerge = createUnoService("com.sun.star.text.MailMerge")           ' Creamos el servicio
       objMailMerge.DataSourceName = "BASE"                         ' El nombre de la base de datos
      [u][size=150][size=150] objMailMerge.DocumentURL = oRuta                                         ' Ruta del documento que tiene la combinación de campos[/size][/size][/u]
       objMailMerge.CommandType = 0                                             ' 0= Tabla, 1=Consulta
       objMailMerge.Command = "DireccionesAlfa"                                        ' Nombre de la tabla que coincide con el nombre de la base de datos
       objMailMerge.OutputType = 2                                              ' 2= FILE, 1 = PRINTER, 3 = EMAIL
       objMailMerge.OutputURL = dRuta                                         ' Ruta de la carpeta en la que se encuentra el documento que guardamos
       objMailMerge.FileNameFromColumn = False
       objMailMerge.SaveAsSingleFile = True
       objMailMerge.FileNamePrefix = "temp"                                     ' Prefijo que utilizamos para el nombre del archivo temporal
       '------------------------------------------------------------------------
       ' 5º Se ejcuta la combinación de correspondencia
       
       objMailMerge.execute(noOpt)                                              ' Se combinan los nuevos datos
       oDoc = StarDesktop.loadComponentFromURL( dRuta &"/temp0.odt", "_blank", 0, mOpciones() )' Se abre el documento ya combinado 
....
 ' Sigue el código pero no es relevante para la pregunta porque el error lo da en la línea marcada
....
End Sub
Gracias

Re: Combinacion de Correspondencia por código

Publicado: Jue Oct 03, 2019 3:54 am
por mauricio
El error esta en que la ruta ya la estas pasando en URL, pasa tu ruta normal:

Código: Seleccionar todo

oRuta= convertToURL("C:\Users\Luis\Documents\Carta Comb.odt")
y pruebas