[RESUELTO] copiar las líneas visibles con "x" y pegar hoja 2

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...

[RESUELTO] copiar las líneas visibles con "x" y pegar hoja 2

Notapor physic » Dom Dic 02, 2018 8:27 pm

saludos ,

               tengo una macro vba de Excel que localiza la letra "x" en la columna "B" de la hoja de cálculo 1 y luego copia la línea visible correspondiente de la columna "A" hasta la columna "C" y pega los valores en forma secuencial en la hoja 2 primera línea vacía .

               la hoja de cálculo 1 está con el filtro auto, con líneas visibles .

              necesito convertir esta macro vba a una macro básica en LibreOffice .

             la nueva macro LibreOffice debe realizar la misma operación

observación :

sigue adjunto el archivo.xls de plantilla con la macro vba para convertir en macro LibreOffice .


abrazos
Adjuntos
copia las líneas visibles con x pega en la hoja de cálculo 2.xls
(35 KiB) 4 veces
Última edición por physic el Jue Dic 06, 2018 12:43 am, editado 1 vez en total
Apache Open Office 4.1.5
physic
 
Mensajes: 57
Registrado: Lun Oct 29, 2018 12:55 am

Re: macro: copiar las líneas visibles con "x" y pegar hoja 2

Notapor physic » Lun Dic 03, 2018 5:01 pm

amigos ,

coloco adjunto el archivo LIbreOffice para las pruebas .


abrazos .
Adjuntos
copia las líneas visibles con x pega en la hoja de cálculo 2.ods
(15.46 KiB) 4 veces
Apache Open Office 4.1.5
physic
 
Mensajes: 57
Registrado: Lun Oct 29, 2018 12:55 am

Re: macro: copiar las líneas visibles con "x" y pegar hoja 2

Notapor fornelasa » Mar Dic 04, 2018 8:55 pm

Esta macro AOO Basic hace (creo) lo que hace la macro VBA que has subido.
No sé si las dos macros hagan lo que en realidad deseas hacer.
Saludos, Federico.
Código: Seleccionar todo   Expandir vistaContraer vista
Option Explicit
Sub CopiaColaSequencia()
    Dim doc As Object
    Dim wsI As Object, wsO As Object
    Dim lRow As Long, i As Long, r As Long
    Dim copyRng As Object, celda As Object
    Dim cursor As Object, rango As String
    Dim datos
       doc = ThisComponent
       wsI = doc.Sheets.getByName("Plan1")
       wsO = doc.Sheets.getByName("Plan2")
     celda = wsI.getCellRangeByName("A1")
    cursor = wsI.createCursorByRange(celda)
     cursor.collapseToCurrentRegion
      lRow = cursor.RangeAddress.endRow
         r = 0     
     For i = 1 To lRow         
      celda = wsI.getCellByPosition(2, i)
       If celda.String <> "" And celda.Rows.IsVisible = True Then
        rango = "A" & i + 1 & ":C" & i + 1         
        r = r + 1
        wsO.copyRange(wsO.getCellByPosition(0, r).CellAddress, wsI.getCellRangeByName(rango).RangeAddress)
       End If
    Next
   
    cursor = wsO.createCursorByRange(wsO.getCellRangeByName("A1"))
     cursor.collapseToCurrentRegion
     datos = cursor.dataArray
        wsO.getCellRangeByName(cursor.absoluteName).setDataArray(datos)   
End Sub
Adjuntos
copia las líneas visibles con x pega en la hoja de cálculo 2.ods
pasar Datos
(17.02 KiB) 5 veces
lo 6.1.2 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3109
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: macro: copiar las líneas visibles con "x" y pegar hoja 2

Notapor physic » Mié Dic 05, 2018 1:36 pm

sr. Federico ,

                    su macro ya está muy buena, muchas gracias por ayudar .

                     tiene como pegar un nuevo bloque después del bloque que ya fue pegado en la "Plan2" ?

                    en el momento está colocando sobre el primer bloque que ya pegó en la "Plan2" .

                   es bueno mantener el bloque inicial, y luego un nuevo bloque sea pegado bajo ese primer bloque, siendo así, puedo guardar histórico de los bloques filtrados y pegados .


abrazos amigo .
Apache Open Office 4.1.5
physic
 
Mensajes: 57
Registrado: Lun Oct 29, 2018 12:55 am

Re: macro: copiar las líneas visibles con "x" y pegar hoja 2

Notapor fornelasa » Mié Dic 05, 2018 6:03 pm

Cambia
Código: Seleccionar todo   Expandir vistaContraer vista
r = 0
Por
Código: Seleccionar todo   Expandir vistaContraer vista
cursor = wsO.createCursorByRange(wsO.getCellRangeByName("A1"))
         cursor.collapseToCurrentRegion
         r = cursor.RangeAddress.endRow

Recuerda siempre debe haber un titulo en la hoja "Plan2", en este caso el rango A1:C1
Saludos, Federico.
lo 6.1.2 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
Avatar de Usuario
fornelasa
 
Mensajes: 3109
Registrado: Jue Feb 17, 2011 8:30 pm
Ubicación: Estado de México, México.

Re: macro: copiar las líneas visibles con "x" y pegar hoja 2

Notapor physic » Jue Dic 06, 2018 12:42 am

[Resuelto]

sr. Federico ,

               se quedó muy bien su macro .

               está funcionando muy bien . :bravo: :bravo: :bravo:

              muchas gracias por la contribución .


abrazos amigo .
Apache Open Office 4.1.5
physic
 
Mensajes: 57
Registrado: Lun Oct 29, 2018 12:55 am


Volver a Macros y API UNO

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados