[RESUELTO]Combinacion de Correspondencia por códig
Publicado: Mié Oct 02, 2019 9:52 pm
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:
Gracias
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