Macro Excel para generar bucle. Ayuda
Buenas Noches.
Tengo este código:
Este código abre un libro que el nombre del libro esta dado por un listado que comienza en la hoja 2 del mismo Libro, los nombres están desde la celda B1 hasta la B5, según las semanas que contengan un mes.
Yo necesito que el valor contenido en esta línea que hace referencia a la celda B1 y ejecute el código por cada celda con datos que puede ir hasta B5.
La Línea es esta: ThisWorkbook.Sheets(2).Range("B1").Select
Este es el código.
Sub Copia_de_Datos()
Dim strArchivo As String
Dim oLibro As Workbook
Dim nombre As String
ThisWorkbook.Sheets(2).Range("B1").Select
nombre = ActiveCell.Value
carpeta = ThisWorkbook.Path
'Creamos la variable de la ruta
strArchivo = carpeta & "\" & nombre
'Comprobamos si el archivo existe en la ruta indicada
If Dir(strArchivo) = "" Then
MsgBox "No existe el archivo en la ruta indicada."
Exit Sub
End If
'Deshabilitamos la actualización de pantalla
Application.ScreenUpdating = False
'Comprobamos si el libro ya esta abierto,
'y, si no lo esta, lo abrimos
'Deshabilitamos los avisos de error
On Error Resume Next
'Intentamos asignar a la variable un libro
'abierto con el nombre que buscamos
Set oLibro = Workbooks(Dir(strArchivo))
'Habilitamos los avisos de error
On Error GoTo 0
'Si la variable no tiene nada asignado
'le asignamos el libro abriendolo directamente
If oLibro Is Nothing Then Set oLibro = Workbooks.Open(strArchivo)
'Definimos Rango de Datos
'Fila_Final = Range("A" & Cells.Rows.Count).End(xlUp).Row 'Se busca la ultima fila con datos
'Range("A2:I" & Fila_Final).Select
Fila_Final = Range("J" & Cells.Rows.Count).End(xlUp).Row
'Realizamos la copia (se supone que el libro Total Horas.xls
'estaría siempre abierto a la hora de ejecutar el código
oLibro.Worksheets(4).Range("B41:J" & Fila_Final).Copy _
ThisWorkbook.Worksheets(1).Range("A" & Rows.Count).End(xlUp).Offset(1)
'Cerramos sin guardar cambios
oLibro.Close False
'Vaciamos la variable
Set oLibro = Nothing
'Habilitamos la actualización de pantalla
Application.ScreenUpdating = True
End Sub
1 Respuesta
Respuesta de Elsa Matilde
2