[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...
Responder
physic
Mensajes: 85
Registrado: Lun Oct 29, 2018 12:55 am

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

Mensaje 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
Adjuntos
copia las líneas visibles con x pega en la hoja de cálculo 2.xls
(35 KiB) Descargado 285 veces
Última edición por physic el Jue Dic 06, 2018 12:43 am, editado 1 vez en total.
LibreOffice 5.4.4.2 >>> Windows 7
physic
Mensajes: 85
Registrado: Lun Oct 29, 2018 12:55 am

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

Mensaje por physic »

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) Descargado 273 veces
LibreOffice 5.4.4.2 >>> Windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
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

Mensaje 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

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) Descargado 292 veces
lo 6.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
physic
Mensajes: 85
Registrado: Lun Oct 29, 2018 12:55 am

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

Mensaje 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 .
LibreOffice 5.4.4.2 >>> Windows 7
Avatar de Usuario
fornelasa
Mensajes: 3268
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

Mensaje por fornelasa »

Cambia

Código: Seleccionar todo

r = 0
Por

Código: Seleccionar todo

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.2.0 | aoo 4.1.6 | win 7/10
¡Un aplauso para todos los que luchan por proteger y promover la Web abierta!
physic
Mensajes: 85
Registrado: Lun Oct 29, 2018 12:55 am

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

Mensaje 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 .
LibreOffice 5.4.4.2 >>> Windows 7
Responder