Hola comunidad, ante todo les agradezco su participación en la lista, leo
-casi- todos los mails y muchos me resultan de utilidad.

El presente es para hacerles una consulta relativa a OOo Basic.

Resulta que gracias a un librito básico, mucha búsqueda en google y mucho
ensayo y error, logré hacer el código VBA en Excel que figura al final.
(Anticipo que no tengo formación en informática y lo que sé lo adquirí
probando mucho y leyendo otro tanto y así y todo, me falta
muuuuuuccchhooooo)

Bueno, también hace un tiempo que trato de usar lo menos posible MS Excel en
favor de OOo Calc por lo que ahora intento ¿traducir? este macro de Excel a
una macro de OOo Basic pero no logro hacer que funcione. Es más, no puedo
hacer que avance de:

sub Cargar_Asiento
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim hoja as object

rem ----------------------------------------------------------------------
rem get access to the document
document   = StarDesktop.CurrentComponent
hoja = document.Sheets.getByName("Carga Asientos")

<Continúa el código que no puede probar>

End Sub

Cuando testeo el código con F8 cuando llega a la línea "hoja = document..."
me aparece el siguiente error: "Error de ejecución de BASIC. Propiedad o
método no encontrados". No existe error en el nombre de la hoja (por si
sirve de algo, digo).

Utilicé la "Guía de Programación StarOffice para BASIC" y otros documentos
de
http://es.openoffice.org/servlets/ProjectDocumentList?folderID=146&expandFolder=146&folderID=0y
no encuentro el error.

¿Alguna idea para orientarme??

De paso -por si alguien tiene el tiempo como para ver el código del final-
les agradezco si  me pueden ayudar en conocer algunas "traducciones" de las
¿órdenes? más habituales. Por ej. para seleccionar una celda he leido que se
usa getCelByPosition(1,1), que sería B2, pero no pude encontrar cómo hacer
para usar el nombre de la celda "B2" en vez de (1, 1).

Bueno, gracias por su tiempo y disculpen por lo extenso del mail,

Atte.,


Leonardo Spaltro.


PD1: he intentado usar la grabadora de macro y luego mirar el código pero su
estructura es muy distinta a lo que conozco en VBA y no logro entender su
lógica para luego adaptarlo a lo que quiero.

PD2: otra cosa que me resulta dificil de comprender de la Guía de
Programación es eso de los servicios "com.sun.star.(...)"


>>>>>>>>>>>>>>>>>>>> INICIO CÓDIGO - VBA Excel <<<<<<<<<<<<<<<<<<<<<<<<<<<<

Sub Cargar_Asiento()
Dim nro_asiento

'Activa el bloqueo de actualización de la pantalla (para no mostrar todo lo
que va haciendo la macro y evitar parpadeos del monitor)
Application.ScreenUpdating = False

'Consistencia de la Carga
If Range("H65") = "Asiento Correcto" Then

    'Copiando Carga de Datos de Asiento
       Range("A11:I61").Select
       Selection.Copy
    'Ubicarse al inicio de la base de asientos en la hoja "Base Asientos"
       Sheets("Base Asientos").Activate
       ActiveSheet.Range("E2").Select
       Selection.End(xlDown).Select   'Baja hasta la última celda llena
       Selection.Offset(1, -3).Select 'Baja una celda más, es decir a
                                      'la primera vacía y tres columnas a la
                                      'izquierda
    'Pegar Datos de Asiento
       Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:=False, Transpose:=False
    'Inicio
       Sheets("Carga Asientos").Activate
       Application.CutCopyMode = False
       Range("D5").Select
    'Mensaje Indicando Nro de Asiento
       Sheets("Carga Asientos").Activate
       nro_asiento = Range("C5").Value
       MsgBox ("Se ha contabilizado el asiento número " & nro_asiento)
    'Numerar próximo Asiento
       'Range("C5").Value = Nro_Asiento + 1
       Sheets("Carga Asientos").Activate
       Range("M4").Select
       Selection.Copy
       Range("C5").Select
       Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:=False, Transpose:=False
    'Limpiar Carga de Asiento
       Range("D11:E61,G11:H61,D5,E7").Select
       Selection.ClearContents
       Range("D5").Select

 'Desactiva el bloqueo de actualización de pantalla
 Application.ScreenUpdating = True

 Else
    MsgBox ("Existen errores en la carga del Asiento, por favor, verifique
su consistencia")
 End If

 End Sub

 >>>>>>>>>>>>>>>>>>>> FIN CÓDIGO <<<<<<<<<<<<<<<<<<<<<<<<<<<<

Responder a