Buenas tardes, tengo un problema a la hora de hacer trabajar mi macro. mi intención es pasar un listado de datos de un libro a otro de forma que vaya seleccionando fila a fila y si en la columna G de cada fila tiene escrita la palabra SI, se copien los datos a otro libro buscando siempre la proxima fila en blanco. En el caso que no tenga el SI escrito que siga leyendo hasta encontrar el siguiente.
resumen: fila 1, G1=SI la copio y la pego en otro libro. fila 2 G2=vacia sigo leyendo fila 3, G3= SI la copio y la pego en la siguiente fila vacia del libro nuevo, etc
Ya he conseguido hacer funcionar el programa haciendolo trabajar en la misma hoja en la que tengo los datos( es decir, lo que habia puesto SI lo copia y lo pega al final de la lista), pero ahora quiero hacerlo funcionar copiandolos a un libro distinto. copio lo que tengo por el momento a la espera de vuestra ayuda. aDJUNTO TAMBIÉN EL EJEMLO DE COMO TRABAJA ESTA MACRO
Sub publicar()
'Definir objetos a utilizar
Dim wbDestino As Workbook, _
wsOrigen As Excel.Worksheet, _
wsDestino As Excel.Worksheet, _
rngOrigen As Excel.Range, _
rngDestino As Excel.Range, _
publicacion As String, _
CONTADOR As Long, _
fila As Long
'Indicar el libro de Excel destino
Set wbDestino = Workbooks.Open("\\SERV1-DC\Menusw7\jmbenlloch\Desktop\Destino.xlsx")
'Activar este libro
ThisWorkbook.Activate
'Indicar las hojas de origen y destino
Set wsOrigen = Worksheets("Hoja1org")
Set wsDestino = wbDestino.Worksheets("Hoja1dest")
'Indicar la celda de origen y destino
Const celdaOrigen = "A1"
Const celdaDestino = "A1"
'Inicializar los rangos de origen y destino
Set rngOrigen = wsOrigen.Range(celdaOrigen)
Set rngDestino = wsDestino.Range(celdaDestino)
'Condicion
For CONTADOR = 1 To 3
fila = CONTADOR
publicacion = Cells(fila, 7)
If publicacion = "SI" Then
'Seleccionar rango de celdas origen
rngOrigen.Select
Range(Cells(fila, 1), Cells(fila, 5)).Select
Selection.Copy
'Pegar datos en celda destino
******AQUÍ NECESITO QUE LAS PEGUE EN OTRO LIBRO Y NO SE HACERLO, EN EL LIBRO QUE HE ACTIVADO AL PRINCIPIO****
Range("a1").End(xlDown).Offset(1, 0).Select
ActiveSheet.Paste
Application.CutCopyMode = False
'Acabar condicion
End If
Next
'Guardar y cerrar el libro de Excel destino
wbDestino.Save
wbDestino.Close
End Sub
Adjunto | Tamaño |
---|---|
origen.xlsx | 8 KB |
ya tienes creado un objeto para la hoja de destino, wsDestino, simplemente utililízalo
'Pegar datos en celda destino (método de la hoja, indicando el destino)
wsDestino.Paste wsDestino.Range("a1").End(xlDown).Offset(1, 0)
------
Ya sé Excel, pero necesito más.