Uso de cookies

Utilizamos cookies propias y de terceros para mejorar nuestros servicios y mostrarle publicidad relacionada con sus preferencias mediante el análisis de sus hábitos de navegación. Si continúa navegando, consideramos que acepta su uso. Para obtener más información o bien conocer cómo cambiar la configuración lea nuestra Política de cookies

Estamos actualizando esta web.
Si detecta errores, por favor, reintente en unos minutos.

Saltar a: navegación, buscar

Nota sobre migrar de VBA a OOo Basic

La compatibilidad entre OOo Basic y VBA hace referencia tanto al lenguaje OOo Basic como a la biblioteca de ejecución. La API de OOo (StarOffice) y el Editor de diálogos no son compatibles con VBA (la estandarización de dichas interfaces hubiese impedido la incorporación de muchos de los conceptos proporcionados por StarOffice).1

Esto, traducido al cristiano, significa que:

VBA 2
If x = 0 Then
   MsgBox "x es igual a cero", vbInformation
Else
   MsgBox "x es distinto de cero", vbCritical
End If
OOo Basic 2
if x=0 then
   msgbox "x es igual a cero", 64
else
   msgbox "x es distinto de cero", 16
end if
VBA 2
For k = 0 To 3000
    m = m + 1
Next
MsgBox "k contiene " & k & " y m contiene " & _
         Format(m, "#,##0.00"), vbQuestion
OOo Basic 2
for k=0 to 3000
    m=m+1
next
msgbox "k contiene " & k & " y m contiene " & _
         format(m,"#,##0.00"), 32
VBA 2
Sub EjemploVBA()
' Desde un documento Excel abre otro documento Excel
' existente y lo cierra.
Dim oHoja As Workbook
  ' Abro el libro donde quiero buscar el valor
    oHoja = Workbooks.Open Filename:= _
       "NombreyRutaDelDocumento"
  ' Cierro el libro que acabo de abrir.
    oHoja.Close
End Sub
OOo Basic 2
Sub EjemploOOoBasic()
' Desde un documento Calc abre otro documento Calc
' existente y lo cierra.
Dim sRuta As String, oHoja As Object, mArg()
 ' Abro el libro donde quiero buscar el valor
   sRuta = ConvertToUrl( "NombreyRutaDelDocumento" )
   oHoja = StarDesktop.loadComponentFromURL( _
        sRuta, "_blank", 0, mArg() )
 ' Cierro el libro que acabo de abrir
   oHoja.close(True)
End Sub

Como puedes ver, la estructura de un IF o de un bucle FOR es la misma. En cuanto al Basic, son compatibles. Algunas funciones se llaman y utilizan parámetros parecidos (msgbox o format ), pero no todas. En cuanto a los objetos, el acceso a los mismos, sus propiedades, eventos y métodos, son completamente diferentes, aunque exista alguna coincidencia (el método close para cerrar un documento abierto).

La incompatibilidad de las API y del editor de diálogos hace imposible la importación directa de las macros VBA. Hay que reescribirlas por completo, pues como se ha visto en los ejemplos, los objetos, métodos, propiedades, eventos, etc. son absolutamente diferentes.

Tampoco existe comparación posible entre el editor de VBA y el de OOo. Quien ha trabajado con el primero sabe que es el mismo que se utiliza en Visual Basic v.6 y que proporciona magníficas herramientas de las cuales carece el editor de OOo.

La documentación existente de VBA en la web está muy estructurada, y a pesar de que es tan críptica como cualquier otra para usuarios noveles, es mucho mejor que la disponible para OOo Basic. Recomendamos por ello que consultes los manuales arriba relacionados de Mauricio Baeza y los que han traducido Arturo Garro e Ismael Fanlo. Si conoces un mínimo de inglés, no dudes en aventurarte con los manuales de Andrew Pitonyak. Al fin y al cabo, si sabes programar macros en VBA, no tendrás problema en entender la mayor parte de estos manuales.

Todas estas dolencias hacen que la migración resulte fatigosa y muy laboriosa. No esperes un camino fácil. Migrar macros no es como convertir documentos de Word o de Excel, para los que OOo dispone de un Asistente que -salvo en aquello que no se puede por copyright o por incompatibilidad absoluta- en pocos minutos puede traducir cientos de documentos y plantillas.

Esperemos que en un futuro, ojalá que sea muy próximo, podamos eliminar los comentarios de esta página.

Notas

1 Extraido de la Guía de programación de StarOffice 7 para BASIC.
2 Tecleando en los editores correspondientes todo en minúscula.El editor de VBA reconoce los comandos y les aplica formato automáticamente, agregando espacios entre los iguales, etc.


Modificada el 27 ago 2015 17:58.   Visitas: 7494