Macro para actualizar datos deficheros asignados por una tabla

Soy muy novato en macros y la verdad que ando perdido perdido... Relato un poco cuales son las necesidades que tengo y hasta donde he conseguido llegar...

Tengo un fichero con dos hojas, una donde tengo la "plantilla" y otra donde tengo la "lista" (nombre de archivos).

Necesito terminar una macro (en condiciones) que me duplique la hoja "plantilla" renombrando la nueva hoja con el nombre de la "lista" y que a su vez en dicha nueva plantilla vuelque datos de el archivo con el mismo nombre. (no se si me he explicado bien...)

Os muestro lo que tengo por ahora... Se agradeceria cualquier aclaracion.

Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Sub crear_hojas()
    Dim Lista As Range
    Dim iX As Long
    On Error GoTo Cancelar
    Set Lista = Application.InputBox(prompt:="Señalar rango de la lista", _
        Title:="Lista de nombres", Type:=8)
    Application.ScreenUpdating = False
    For iX = Lista.Count To 1 Step -1
        ActiveWorkbook.Sheets("RESUMEN").Copy Before:=ActiveWorkbook.Sheets("RESUMEN")
        ActiveSheet.Name = Lista(iX)
        ActiveSheet.Range("J20") = Lista(iX) & ".xlsx"
'se realiza el remplazo entre la RUTA por la RUTA DE LA LISTA que toque
    Cells.Replace What:="modelo_RESUMEN.xlsm", Replacement:=Range("J20"), LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Next iX
    Sheets(1).Select
    Application.ScreenUpdating = True
Cancelar:
End Sub

He conseguido que la macro haga lo que quiero, pero el problema es, que cuando va a actualizar los datos de la nueva "ficha" me pide que habra el documento POR CADA CELDA A MODIFICAR! Y claro si quiero generar varias fichas a la vez la cosa se complica... Me esta volviendo loco... Seguro que para expertos como vosotros es una chorrada.

1 Respuesta

Respuesta

Agrega al principio de tu macro esta instrucción:

Application.DisplayAlerts = False

Quedaría así:

Rem Attribute VBA_ModuleType=VBAModule
Option VBASupport 1
Sub crear_hojas()
    Application.DisplayAlerts = False
    Dim Lista As Range
    Dim iX As Long
    On Error GoTo Cancelar
    Set Lista = Application.InputBox(prompt:="Señalar rango de la lista", _
        Title:="Lista de nombres", Type:=8)
    Application.ScreenUpdating = False
    For iX = Lista.Count To 1 Step -1
        ActiveWorkbook.Sheets("RESUMEN").Copy Before:=ActiveWorkbook.Sheets("RESUMEN")
        ActiveSheet.Name = Lista(iX)
        ActiveSheet.Range("J20") = Lista(iX) & ".xlsx"
'se realiza el remplazo entre la RUTA por la RUTA DE LA LISTA que toque
    Cells.Replace What:="modelo_RESUMEN.xlsm", Replacement:=Range("J20"), LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Next iX
    Sheets(1).Select
    Application.ScreenUpdating = True
Cancelar:
End Sub

Prueba y me comentas

'S aludos. Dante Amor. Si es lo que necesitas, Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas