No estas registrado.

#1 2012-12-10 13:18:06

Gracia
Tuxes
Registrado: 2012-12-10
Mensajes: 1

Macro Ejecutable Libre Office

Saludos,
Tengo una macro en archivo de excel que se abre y funciona perfectamente en Libre office 3.6. Sin embargo, despues de guardarla ( ya sea como Ms 2003, plantilla o ODF) y trato de ejecutarla nuevamente me sale error tipo 91. En esta parte:                ¿Porque podria ser? ¿Sera que el codigo Basic  codifica de forma diferente esta funcion?

Worksheets(Hoja).Select
Range("A12").Select
While Activecell <> ""
ActiveCell.Offset(0,1).Select
Wend

Desconectado

#2 2012-12-18 17:52:56

Alf
Tuxes
Desde: Guadalajara Jalisco, México
Registrado: 2011-12-05
Mensajes: 79

Re: Macro Ejecutable Libre Office

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).

Ejemplo

VBA escribió:

If x = 0 Then
   MsgBox "x es igual a cero", vbInformation
Else
   MsgBox "x es distinto de cero", vbCritical
End If

Visual openoffice escribió:

if x=0 then
   msgbox "x es igual a cero", 64
else
   msgbox "x es distinto de cero", 16       
end if

VBA escribió:

For k = 0 To 3000
    m = m + 1
Next
MsgBox "k contiene " & k & " y m contiene " & _
         Format(m, "#,##0.00"), vbQuestion

Visual Openoffice escribió:

for k=0 to 3000
    m=m+1
next
msgbox "k contiene " & k & " y m contiene " & _
         format(m,"#,##0.00"), 32

VBA escribió:

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

Visual Openoffice escribió:

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.

Lo que te explico lo uso mensionando a openoffice porque es el manual que estoy leyendo sobre macros, pero las practico en libreoffice y no hay falla.

Espero te sirva.


Que el no límite sea tú límite

Desconectado

Pie de página

Powered by FluxBB