Hola Leonardo...
Hola a todos...
Dicen en mi pueblo que -lo prometido es deuda-, así que te muestro la macro
funcionando en OOo Basic, el código esta insertado entre las instrucciones
originales en VBA comentadas con la palabra clave Rem, traté de mostrarte los
equivalente pero muchas cosas en OOo Basic se implementan de forma diferente.
En mis pruebas funciono igual que tu original pero como ando muy fallo en cosas
contables ya nos contaras como te fue...
Saludos a todos...
Mauricio
Option Explicit
Sub CargarAsiento()
Rem Dim nro_asiento
Dim iNumeroAsiento As Integer
Dim oEsteArchivo As Object
Dim oHojaActiva As Object
Dim oHojaBaseAsientos As Object
Dim sTmp As String
Dim oOrigen As Object
Dim oDestino As Object
Dim lUltimaFila As Long
Const TIPOCONTENIDO As Integer = 7
'1 = com.sun.star.sheet.CellFlags.VALUE
'2 = com.sun.star.sheet.CellFlags.DATETIME
'4 = com.sun.star.sheet.CellFlags.STRING
oEsteArchivo = ThisComponent
Rem 'Activa el bloqueo de actualización de la pantalla (para no mostrar todo lo
que va haciendo la macro y evitar parpadeos del monitor)
Rem Application.ScreenUpdating = False
oEsteArchivo.LockControllers
'Obtenemos una referencia a la hoja actual, o sea, la activa
oHojaActiva = oEsteArchivo.getCurrentController.getActiveSheet()
'Obtenemos el valor de la celda H65
sTmp = oHojaActiva.getCellRangeByName( "H65" ).getString()
Rem 'Consistencia de la Carga
Rem If Range("H65") = "Asiento Correcto" Then
If sTmp = "Asiento Correcto" Then
Rem 'Copiando Carga de Datos de Asiento
Rem Range("A11:I61").Select
Rem Selection.Copy
Rem 'Ubicarse al inicio de la base de asientos en la hoja "Base Asientos"
Rem Sheets("Base Asientos").Activate
Rem ActiveSheet.Range("E2").Select
Rem Selection.End(xlDown).Select 'Baja hasta la última celda llena
Rem Selection.Offset(1, -3).Select 'Baja una celda más, es decir a
Rem 'la primera vacía y tres columnas a la
Rem 'izquierda
Rem 'Pegar Datos de Asiento
Rem Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:=False, Transpose:=False
'Rango de celdas a copiar
oOrigen = oHojaActiva.getCellRangeByName( "A11:I61" )
'Obtenemos una referencia a la hoja Base Asientos
oHojaBaseAsientos = oEsteArchivo.getSheets.getByName( "Base Asientos" )
'De la columna E, filtramos por las celdas VACIAS
oDestino = oHojaBaseAsientos.getCellRangeByName( "E2:E65536"
).queryEmptyCells()
'La primer fila vacia será la primer fila libre
lUltimaFila = oDestino(0).getRangeAddress.StartRow()
'Redefinimos el destino para empezar en la primer fila libre
oDestino = oHojaBaseAsientos.getCellRangeByPosition(
1,lUltimaFila,9,lUltimaFila+50 )
'Copiamos TODOS los datos del origen al destino, OJO, los rangos deben
ser exactamente del mismo tamaño
oDestino.setDataArray( oOrigen.getDataArray() )
Rem 'Inicio
Rem Sheets("Carga Asientos").Activate
Rem Application.CutCopyMode = False
Rem Range("D5").Select
Rem 'Mensaje Indicando Nro de Asiento
Rem Sheets("Carga Asientos").Activate
Rem nro_asiento = Range("C5").Value
iNumeroAsiento = oHojaActiva.getCellRangeByName( "C5" ).getValue()
Rem MsgBox ("Se ha contabilizado el asiento número " & nro_asiento)
MsgBox "Se ha contabilizado el asiento número " & Str(iNumeroAsiento),
64
Rem 'Numerar próximo Asiento
Rem 'Range("C5").Value = Nro_Asiento + 1
Rem Sheets("Carga Asientos").Activate
Rem Range("M4").Select
Rem Selection.Copy
Rem Range("C5").Select
Rem Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:=False, Transpose:=False
oHojaActiva.getCellRangeByName( "C5" ).setValue( iNumeroAsiento + 1 )
Rem 'Limpiar Carga de Asiento
Rem Range("D11:E61,G11:H61,D5,E7").Select
Rem Selection.ClearContents
Rem Range("D5").Select
oHojaActiva.getCellRangeByName( "D11:E61" ).clearContents(
TIPOCONTENIDO )
oHojaActiva.getCellRangeByName( "G11:H61" ).clearContents(
TIPOCONTENIDO )
oHojaActiva.getCellRangeByName( "D5" ).clearContents( TIPOCONTENIDO )
oHojaActiva.getCellRangeByName( "E7" ).clearContents( TIPOCONTENIDO )
Rem Else
Else
Rem MsgBox ("Existen errores en la carga del Asiento, por favor, verifique
su consistencia")
MsgBox "Existen errores en la carga del Asiento, por favor, verifique
su consistencia", 16, "Error"
Rem End If
End If
Rem 'Desactiva el bloqueo de actualización de pantalla
Rem Application.ScreenUpdating = True
oEsteArchivo.UnLockControllers
End Sub
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]