Necesito extraer categoria de dato de celda

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
arivas_2005
Mensajes: 162
Registrado: Mié Nov 16, 2011 6:01 pm

Necesito extraer categoria de dato de celda

Mensaje por arivas_2005 »

Salaudos
Como puedo obtener la categoria de formato aplicada a una celda.
como lo que se presenta en
https://www.openoffice.org/api/docs/com ... ormat.html
estoy intentando con

Código: Seleccionar todo

    nombrehoja=Thiscomponent.Sheets.getByName(nombre_hoja)  
    MRI ThisComponent.NumberFormats.getByKey(nombrehoja.getCellByposition(2,1).NumberFormat)
pero no puedo ubicar ya sea el nombre de la categoria o el valor asignado a cada una
Libreoffice 4.7
Puppy slacko 6 y windows 7
Neftali R
Mensajes: 169
Registrado: Mar Jun 15, 2021 12:48 pm
Ubicación: Venezuela

Re: Necesito extraer categoria de dato de celda

Mensaje por Neftali R »

Buen día, este código funciona para mí.

Código: Seleccionar todo

Sub probando
Dim oHoja As Object, iFormato As Integer
oHoja = ThisComponent.getSheets.getByName("NuevaHoja1")
iFormato = oHoja.getCellRangeByName("B3").NumberFormat
MsgBox iFormato
End Sub
Me da resultados diferentes dependiendo del formato de la celda, sin embargo, los valores que recivo no coinciden con los valores que hay en la documentación, supongo que será porque esa es la documentación de OpenOffice y yo estoy utilizando LibreOffice, además de la versión.
Pero aún así el código funciona.
LibreOffice 7.2.6.2 | Windows 7 Ultimate
arivas_2005
Mensajes: 162
Registrado: Mié Nov 16, 2011 6:01 pm

Re: Necesito extraer categoria de dato de celda

Mensaje por arivas_2005 »

Saludos..
agradeciendo el apoyo brindado y aqui de nuevo..
ya logré obtener el resultado y lo comparto.

Código: Seleccionar todo

sub BUSCANDO_TIPO_DE_DATO_EN_CELDAS
	
  Globalscope.BasicLibraries.LoadLibrary( "MRILib" )
  
    nombre_hoja=ThisComponent.CurrentController.ActiveSheet.Name
    hoja_n=ThisComponent.CurrentController.ActiveSheet.RangeAddress.Sheet
    nombre_hoja=ThisComponent.CurrentController.ActiveSheet.Name
    nombrehoja=Thiscomponent.Sheets.getByName(nombre_hoja) 
    
'	  MRI ThisComponent.NumberFormats.getByKey(nombrehoja.getCellByposition(0,0).NumberFormat)
	  MRI ThisComponent.getNumberFormats.getByKey(nombrehoja.getCellByposition(0,10).NumberFormat).Type	  
	
	STOP   
	
	NCATEGORIA=ThisComponent.getNumberFormats.getByKey(nombrehoja.getCellByposition(0,10).NumberFormat).Type	  
	
	' aqui queda realizar un ciclo para que segun el numero de la linea anterior, se determine cual
	'  de la categoria fue elegida al formatear la celda ... como se lista en 
	'' https://www.openoffice.org/api/docs/common/ref/com/sun/star/util/NumberFormat.html

END SUB
Comentar que desde hace 4 días me dediqué totalmente a encontrar esto que estoy necesitando..
y googleando intensamente... (muchisimas horas)
Quizas esperaba encontrar un proceso que mostrara las categorias como esta forma com.sun.star.util.NumberFormat.CURRENCY pero ... bueno.. solo llegué ahí por medio del numero
y, espero por si hay un procedimiento mas práctico y/o formal.
Nuevamente mis agradecimientos!
Libreoffice 4.7
Puppy slacko 6 y windows 7
Responder