Attribute VB_Name = "Module1" Dim objSM, objDesk, objDBContext, dsInstance, objInfo(7), objMerge As Object Dim args() Const dsName As String = "MergeFile" Const csvPath As String = "C:\Documents and Settings\Ludovico\Documenti\OOffice2\Issues\csv\MergeFile.csv" Const templatePath As String = "file:///C:/Documents and Settings/Ludovico/Documenti/OOffice2/Issues/template/TemplateDoc.odt" Const databasedocumentPath As String = "C:/Documents and Settings/Ludovico/Documenti/OOffice2/Issues/database/MergeFile.odb" Const destinationFolder As String = "file:///C:/Documents and Settings/Ludovico/Documenti/OOffice2/Issues/OOoMerge/" Const fileDel As String = "C:\Documents and Settings\Ludovico\Documenti\OOffice2\Issues\database\MergeFile.odb" Private Sub InitOOo() Set objSM = CreateObject("com.sun.star.ServiceManager") Set objDesk = objSM.createInstance("com.sun.star.frame.Desktop") Set objDBContext = objSM.createInstance("com.sun.star.sdb.DatabaseContext") ReDim vecCodes(0) End Sub Function createStruct(strTypeName) Dim objStr As Object Set objStr = objSM.Bridge_GetStruct(strTypeName) Set createStruct = objStr End Function Private Sub createInfo() Set objInfo(0) = createStruct("com.sun.star.beans.PropertyValue") objInfo(0).Name = "Extension" objInfo(0).Value = "csv" Set objInfo(1) = createStruct("com.sun.star.beans.PropertyValue") objInfo(1).Name = "HeaderLine" objInfo(1).Value = "true" Set objInfo(2) = createStruct("com.sun.star.beans.PropertyValue") objInfo(2).Name = "FieldDelimiter" objInfo(2).Value = ";" Set objInfo(3) = createStruct("com.sun.star.beans.PropertyValue") objInfo(3).Name = "StringDelimiter" objInfo(3).Value = """" Set objInfo(4) = createStruct("com.sun.star.beans.PropertyValue") objInfo(4).Name = "DecimalDelimiter" objInfo(4).Value = "." Set objInfo(5) = createStruct("com.sun.star.beans.PropertyValue") objInfo(5).Name = "ThousandDelimiter" objInfo(5).Value = "," Set objInfo(6) = createStruct("com.sun.star.beans.PropertyValue") objInfo(6).Name = "CharSet" objInfo(6).Value = "ISO-8859-15" Set objInfo(7) = createStruct("com.sun.star.beans.PropertyValue") objInfo(7).Name = "FixedLenght" objInfo(7).Value = "true" End Sub Private Sub createDataSource() Set dsInstance = objDBContext.createInstance() dsInstance.setPropertyValue "URL", "sdbc:flat:" + csvPath createInfo dsInstance.Info = objInfo dsInstance.setPropertyValue "IsPasswordRequired", False dsInstance.DatabaseDocument.storeAsURL "file:///" + databasedocumentPath, args() ' WITHOUT THIS SEQUENCE (REGISTER-REVOKE-REGISTER) THE TABLE "MergeFile" IS NOT AVAILABLE objDBContext.registerObject dsName, dsInstance objDBContext.revokeObject dsName objDBContext.registerObject dsName, dsInstance End Sub Private Sub doMerge() On Error GoTo dereg Set objMerge = objSM.createInstance("com.sun.star.text.MailMerge") objMerge.setPropertyValue "DataSourceName", dsName objMerge.setPropertyValue "Command", dsName objMerge.setPropertyValue "CommandType", 0 'com.sun.star.sdb.CommandType.TABLE = 0 objMerge.setPropertyValue "OutputType", 2 'com.sun.star.text.MailMergeType.FILE = 2 objMerge.setPropertyValue "DocumentURL", templatePath objMerge.setPropertyValue "OutputURL", destinationFolder Dim oProps() 'WITHOUT THE NEXT LINE, THE delODBFile SUB COULD DELETE THE DATABASE FILE objMerge.execute oProps() 'REVOKE AND DISPOSE THE DATASOURCE deregDataSource 'DISPOSE THE MAILMERGE SERVICE objMerge.dispose GoTo exitsub dereg: deregDataSource objMerge.dispose exitsub: End Sub Private Sub deregDataSource() If objDBContext.hasByName(dsName) Then objDBContext.revokeObject dsName End If dsInstance.dispose End Sub Private Sub delODBFile() 'On Error Resume Next Kill fileDel End Sub Private Sub Main() InitOOo createDataSource doMerge delODBFile End Sub