De wiki.open-office.es

Saltar a: navegación, buscar


Portada wiki.open-office.es OOo3 main 28.png OOo3 writer-app 28.png OOo3 calc-app 28.png OOo3 impress-app 28.png OOo3 base-app 28.png OOo3 macro-doc 28.png OOo3 draw-app 28.png OOo3 math-app 28.png OOo3 Extension 28.png
   Inicio > Basic Acerca de open-office.es Help 18.png Rss 18.png Libro de visitas Ver.4.0.x  

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  OOo Basic  2 
If x = 0 Then
   MsgBox "x es igual a cero", vbInformation
Else
   MsgBox "x es distinto de cero", vbCritical
End If 
if x=0 then
   msgbox "x es igual a cero", 64
else
   msgbox "x es distinto de cero", 16		
end if 
For k = 0 To 3000
    m = m + 1
Next
MsgBox "k contiene " & k & " y m contiene " & _
         Format(m, "#,##0.00"), vbQuestion
for k=0 to 3000
    m=m+1
next
msgbox "k contiene " & k & " y m contiene " & _
         format(m,"#,##0.00"), 32
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
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 de macros en VBA, no tendrás problema en entender la mayo 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.



Portada.jpg
En nuestro blog encontrarás trucos, plantillas, cliparts, extensiones y cientos de útiles más para Apache OpenOffice, LibreOffice y NeoOffice

Tema siguiente: Volver

Nuevo.png
Descubre la nueva barra de herramientas lateral
Buscar en open-office.es

E n l a c e s 
· Generar PDF gratis
· Agregar listas de enlaces con WordPress
· Sumas y restas para niños

Identi.ca Tuenti Google+

En Valencia, Hostal Restaurante Chicote en primera línea de playa
Hostal Restaurante Chicote

En primera línea de la playa de Valencia
A un paso de todo
AOO descargar.png
Descargar Apache OpenOffice OFICIAL
ForoOOOE 250.png
Foro OFICIAL en Español
OOo Logo 180.png
Web OFICIAL de Apache OpenOffice
Blog sbs.png
Acerca_de... Política de privacidad Aviso legal Para contactar Libro de visitas
CC BY-SA.png
Esta página fue modificada por última vez el 28 jul 2013, a las 20:33.   Esta página se ha visitado 5464 veces.