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