Estimados, primero que nada muchísimas gracias por sus colaboraciones.
Necesito hacerlo con una macro porque debo hacer otros cálculos despues de importar los datos y preciso que estén con decimales para el resultado final.
Definitivamente estaba errando en la asignación del formato a la celda, tampoco sabía que tenía que escribir y agregar el formato a los formatos de mi documento.
Después de un par de modificaciones, quedo así:
Código: Seleccionar todo
Option Explicit
Sub Main
Dim oDoc As Object ' Documento actual
Dim oHoja As Object ' Hoja activa
Dim oCelda As Object ' Celda en la cual voy a trabajar
Dim CadenaFormatoNumero As String
Dim FormatosNumeros As Object
Dim IndiceFormato As Long
Dim LocalSettings As New com.sun.star.lang.Locale
oDoc = ThisComponent
oHoja = oDoc.currentController.getActiveSheet()
oCelda = oHoja.getCellRangeByName( "A1" )
CadenaFormatoNumero = "###0,00"
With LocalSettings
.Language = "es"
.Country = "es"
End With
' Accedemos a los distintos formatos presentes en el documento
FormatosNumeros = oDoc.NumberFormats
' Consultamos si existe el que nosotros queremos
IndiceFormato = FormatosNumeros.queryKey(CadenaFormatoNumero, LocalSettings, True)
If IndiceFormato = -1 Then
' Si no existe entonces lo añade a los existentes
IndiceFormato = FormatosNumeros.addNew(CadenaFormatoNumero, LocalSettings)
End If
' Se asigna el formato adecuado a la celda
oCelda.NumberFormat = IndiceFormato
End Sub
Entonces para importar el documento pienso hacer un while y asignarle el formato a cada celda que necesito:
Código: Seleccionar todo
Do While oCelda.Type <> EMPTY
' Aquí le asigno el formato que obtuve en el código anterior
oCelda.NumberFormat = IndiceFormato
'Aumento el contador y paso de celda
iContador = iContador + 1
oCelda = oHoja.getCellRangeByName( "A"+iContador )
Loop
Aún no lo probé pero seguro que funciona.
Muchísimas gracias y como siempre, espero que les sirva a muchos más.
Un abrazo
