[RESUELTO]Migrar Código VBA de Excel 2007 a Basic OpenOffice

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
malpanez
Mensajes: 5
Registrado: Mié Oct 06, 2010 2:42 pm
Ubicación: Madrid (España)

[RESUELTO]Migrar Código VBA de Excel 2007 a Basic OpenOffice

Mensaje por malpanez »

Buenas Tardes:

Tengo el Siguiente Código:

En VBA en un Espacio General en el que en cualquier fichero de excel puede ejecutar estas Macros.

Las uso para el trabajo y el objetivo es Migrar este código al Basic de OpenOffice.

Tengo Excel 2007 y OpenOficce 3.2.1 en Windows XP.

Código: Seleccionar todo

Sub FormatearCeldas()
'
' FormatearCeldas Macro
'
' Acceso directo: CTRL+s
'
    Cells.Select
    Cells.EntireColumn.AutoFit
    Range("A:C,D1:E1,F:F").Select
    Range("F1").Activate
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Cells.Select
    Cells.EntireColumn.AutoFit
    Range("A1").Select
End Sub
--------------------------------------
Sub EliminarFilasVacias()
'
' EliminarFilasVacias Macro
'
' Acceso directo: CTRL+w
'
'ocultamos el procedimiento
Application.ScreenUpdating = False
'suprondremos que vamos a inspeccionar 1.000 filas,
'en busca de todas las que haya en blanco
For i = 1 To 65000
'si la celda está vacía...
If ActiveCell = "" Or IsNull(ActiveCell) Then
'nos quedamos con la celda donde estamos
'para volver a ella posteriormente
celda = ActiveCell.Address
'vamos hasta la primera celda a la
'derecha que encontremos, con datos
Selection.End(xlToRight).Select
'si está vacía esa celda
If ActiveCell = "" Or IsNull(ActiveCell) Then
'miramos si a la izquierda hay datos
Selection.End(xlToLeft).Select
'si también está vacía esa celda
If ActiveCell = "" Or IsNull(ActiveCell) Then
'eliminamos la fila
Selection.EntireRow.Delete
'volvemos a la celda donde estábamos
'siempre y cuando no estemos en la fila 1
If ActiveCell.Row <> 1 Then Range(celda).Offset(-1, 0).Select
End If
End If
End If
'pasamos a la siguiente fila
ActiveCell.Offset(1, 0).Select
Next
'mostramos el procedimiento
Application.ScreenUpdating = True
End Sub
Si alguien me pudiera ayudar a que pudiera migrar este código a OpenOffice, se lo agradecería mucho puesto que no puedo estar abriendo Excel, pasarle las macros y luego trabajar con él en OpenOffice.

Muchas gracias por adelantado.


Editado por el moderador (mauricio) para cambiar el icono de la flama que es para reportar errores. Si no lo has hecho aún por favor lee la Guía de supervivencia
Última edición por malpanez el Mié Oct 13, 2010 6:18 am, editado 1 vez en total.
OpenOffice 3.2.1 (Build 9502) en Windows XP SP-3
malpanez
Mensajes: 5
Registrado: Mié Oct 06, 2010 2:42 pm
Ubicación: Madrid (España)

Re: Migrar Código VBA de Excel 2007 a Basic OpenOffice 3.2.1

Mensaje por malpanez »

Bueno, esperaba aparte de las visitas algún consejo, haz esto, lo otro ...

Por favor, agradecería cualquier sugerencia al respecto.
OpenOffice 3.2.1 (Build 9502) en Windows XP SP-3
Avatar de Usuario
RGB-es
Mensajes: 4739
Registrado: Lun Nov 24, 2008 10:46 am
Contactar:

Re: Migrar Código VBA de Excel 2007 a Basic OpenOffice 3.2.1

Mensaje por RGB-es »

malpanez escribió:Bueno, esperaba aparte de las visitas algún consejo, haz esto, lo otro ...

Por favor, agradecería cualquier sugerencia al respecto.
¿Has pensado en la posibilidad de que nadie tenga una respuesta? Yo por mi parte hace 10 años que no utilizo msoffice por lo que no podría ser de utilidad en una «migración» (más allá de que no podría ser de utilidad con macros...). Ten en cuenta que este es un foro de usuarios para usuarios. Algunos tenemos más experiencia que otros, pero seguimos siendo usuarios y no tenemos porqué conocer todas las repuestas... Si no lo has hecho aún por favor lee la Guía de supervivencia
No respondo mensajes privados sobre AOO/LibO, por favor, utilice el foro para sus preguntas

LibreOffice en openSUSE con escritorio Plasma
---
Existen dos clases de personas: las que dicen que existen dos clases de personas y las que no.
malpanez
Mensajes: 5
Registrado: Mié Oct 06, 2010 2:42 pm
Ubicación: Madrid (España)

Re: Migrar Código VBA de Excel 2007 a Basic OpenOffice 3.2.1

Mensaje por malpanez »

Buenas:
RGB-es escribió:
malpanez escribió:Bueno, esperaba aparte de las visitas algún consejo, haz esto, lo otro ...

Por favor, agradecería cualquier sugerencia al respecto.
¿Has pensado en la posibilidad de que nadie tenga una respuesta? Yo por mi parte hace 10 años que no utilizo msoffice por lo que no podría ser de utilidad en una «migración» (más allá de que no podría ser de utilidad con macros...). Ten en cuenta que este es un foro de usuarios para usuarios. Algunos tenemos más experiencia que otros, pero seguimos siendo usuarios y no tenemos porqué conocer todas las repuestas... Si no lo has hecho aún por favor lee la Guía de supervivencia
Gracias, al menos alguien contesta aunque sea para decir que no tiene ni idea.

Sí, lo había pensado, pero nadie comentaba nada y a veces en otros foros para decir que no saben escriben bastantes usuarios.

Tengo claro que somos usuarios de un producto y a veces nos esclavizamos con él, tal vez las macros que expuse no son especialmente complejas pero si no sabes como funcionan en OpenOffice, la sintaxis, etc, no te sirve de nada. Una de ellas, la que realmente me interesa, es la que se recorre el calc y si encuentra filas vacías, las borra, lo utilizo para limpiar unos ficheros csv que me genera una aplicación pequeña en java que han desarrollado para limpiar los logs de otra aplicación mas grande.

De todas maneras, agradezco muchísimo la vida de este foro y en especial tu contestación.

Seguiré esperando que alguien me pueda ayudar con este tema para no depender de MS Office en este aspecto.

Un Cordial Saludo.
OpenOffice 3.2.1 (Build 9502) en Windows XP SP-3
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Migrar Código VBA de Excel 2007 a Basic OpenOffice 3.2.1

Mensaje por mauricio »

a veces en otros foros para decir que no saben escriben bastantes usuarios.
Esto me parece absurdo, si todos dijéramos lo que no sabemos, esto estaría lleno de basura...
Una de ellas, la que realmente me interesa, es la que se recorre el calc y si encuentra filas vacías, las borra, lo utilizo para limpiar unos ficheros csv que me genera una aplicación pequeña en java que han desarrollado para limpiar los logs de otra aplicación mas grande.
La primer la reemplazas fácilmente con estilos y sin necesidad de macros. Para la segunda, cometen el clásico error de noveles de trabajar por código con selecciones y desaprovechar el poder de las herramientas de la hoja de calculo, si de veras te interesa, anexa a este tema un ejemplo de dicho archivo a limpiar para ayudarte, si solo traducimos tal cual la macro que publicas (que es posible), traducimos también esos errores y el ineficiente algoritmo, es mejor crear uno nuevo...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
malpanez
Mensajes: 5
Registrado: Mié Oct 06, 2010 2:42 pm
Ubicación: Madrid (España)

Re: Migrar Código VBA de Excel 2007 a Basic OpenOffice 3.2.1

Mensaje por malpanez »

Muchas gracias por tu respuesta, mauricio.

Te he adjuntado un par de ficheros csv de los que genera esa aplicación java que me han hecho para limpiar los logs del sistema.

Tienes toda la razón, si todo el mundo pasara y dijera que no sabe de algo, se harían hilos interminables quizás esperaba una pequeña respuesta parecida a la tuya.

Si me puedes orientar con los estilos, simplemente lo que viene a hacer es seleccionar un par de columnas y centrarlas y eso, vamos que lo puedo hacer incluso a mano, la peor es la otra.

De nuevo, muchas gracias por el interés y la ayuda aportadas.

Esperando prontas noticias.

Un Saludo Cordial.
OpenOffice 3.2.1 (Build 9502) en Windows XP SP-3
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Migrar Código VBA de Excel 2007 a Basic OpenOffice 3.2.1

Mensaje por mauricio »

Hola...

Para los estilos checa el excelente libro del compañero Ricardo: http://user.services.openoffice.org/es/ ... =12&t=3413
si bien esta orientado a Writer, el manejo es Calc de estilos es muy similar, la ayuda del programa también es un buen recurso, si tiene alguna duda concreta, usa el foro correcto y creo que obtendrás respuestas inmediatas...

Respecto a los archivos que anexas, te pregunto si abres en Calc ¿solo para eliminar las filas vacías o haces algún otro proceso?, ¿el resultado lo requieres en una hoja de calculo o de nuevo en el CSV?...

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
malpanez
Mensajes: 5
Registrado: Mié Oct 06, 2010 2:42 pm
Ubicación: Madrid (España)

Re: Migrar Código VBA de Excel 2007 a Basic OpenOffice 3.2.1

Mensaje por malpanez »

Buenas:

Echaré un vistazo a la información de los estilos que me proporcionas y veré como lo puedo solucionar, la otra opción es ir a Datos/Ordenar/Fecha y Hora. Que tampoco me voy a morir por usar un poco los menús y los botones de acceso directo.

Por otro lado, en cuanto a los CSV, lo que viene haciendo la macro es ver si hay espacios vacíos y si los hay, elimina la fila. El resultado se queda en el propio archivo que abro, el CSV que queda de esta manera modificado. Posteriormente le paso unos auto-filtros y selecciono diferentes valores: documentEdicion, documentCancelEdit, documentSaveFicha y document...toPrint que suelo hacerlo a mano copiandolos a un excel aparte donde genero un informe con gráficos de los milisegundos que tarda la acción. Pero vamos, el objetivo es que cuando aplique los auto-filtros, no me encuentre con filas vacías que hace que los auto-filtros no seleccionen bien los datos que necesito.

Espero haber resuelto tus dudas.

Muchas gracias por tu ayuda.

Un Saludo.
OpenOffice 3.2.1 (Build 9502) en Windows XP SP-3
Avatar de Usuario
mauricio
Mensajes: 6093
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Migrar Código VBA de Excel 2007 a Basic OpenOffice 3.2.1

Mensaje por mauricio »

Hola...

Hay muchas formas de hacer lo que quieres, la primera es usando filtros, esta es útil cuando los datos no son homogéneos, otra es consulta las celdas vacías, dado que tus archivos son bastante homogéneos y tienen pocas filas vacías, usamos este segundo método:

Código: Seleccionar todo

Sub FilasVacias()
Dim oDoc As Object
Dim oHojaActiva
Dim oCursor As Object
Dim oRango As Object
Dim oCeldas As Object
Dim oCelda As Object

	oDoc = ThisComponent
	oHojaActiva = oDoc.getCurrentController.getActiveSheet
	oCursor = oHojaActiva.createCursor()
	oCursor.gotoEndOfUsedArea( False )
	oRango = oHojaActiva.getCellRangeByPosition(0,0,0,oCursor.getRangeAddress.EndRow)
	oCeldas = oRango.queryEmptyCells()
	For Each oCelda In oCeldas
		oHojaActiva.getRows.removeByIndex( oCelda.getRangeAddress.StartRow, oCelda.getRows.getCount() )
	Next

End Sub
Por favor, si esto responde tu pregunta, edita el primer mensaje de este hilo y agrega al principio del título la etiqueta [RESUELTO], de esta forma conseguiremos un foro más ordenado.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Responder