Página 1 de 1

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

NotaPublicado: Dom Dic 02, 2018 8:27 pm
por physic
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

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

NotaPublicado: Lun Dic 03, 2018 5:01 pm
por physic
amigos ,

coloco adjunto el archivo LIbreOffice para las pruebas .


abrazos .

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

NotaPublicado: Mar Dic 04, 2018 8:55 pm
por fornelasa
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

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

NotaPublicado: Mié Dic 05, 2018 1:36 pm
por physic
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 .

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

NotaPublicado: Mié Dic 05, 2018 6:03 pm
por fornelasa
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.

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

NotaPublicado: Jue Dic 06, 2018 12:42 am
por physic
[Resuelto]

sr. Federico ,

               se quedó muy bien su macro .

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

              muchas gracias por la contribución .


abrazos amigo .