[RESUELTO]Combinacion de Correspondencia por códig

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Preguntar-Responder
Mensajes: 15
Registrado: Dom Oct 11, 2015 12:20 pm

[RESUELTO]Combinacion de Correspondencia por códig

Mensaje 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
Última edición por Preguntar-Responder el Mié Mar 10, 2021 12:03 am, editado 1 vez en total.
Libre Office 4.4.5.3. Sistema Operativo Windows 8 Pro
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Combinacion de Correspondencia por código

Mensaje 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
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Responder