Les comento que estoy trabajando a una macro, la cual consiste en buscar datos de otro libro de excel, mediante el comando ActiveWorkbook.Path.
Necesito que busque 5 archivos distintos, los cuales están nombrados con números del 1 al 5. Para hacer esto, copie 5 veces el código ActiveWorkbook. El problema es que si un día solo tengo 3 archivos, la macro arroja un error al no encontrar el cuarto archivo.
Probe utilizando el comando On Error GoTo "primero" , y al final primero:
Funcionó con el primer codigo, pero el segundo utilice On Error GoTo "segundo, y no lo considera.
Sub TEST()
'
' TEST Macro
Dim wbDestino As Workbook, _
wsOrigen As Excel.Worksheet, _
wsDestino As Excel.Worksheet, _
rngOrigen As Excel.Range, _
rngDestino As Excel.Range
Sheets("DATA").Select
Range("A1").Select
On Error GoTo primero
Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "/EXCEL/1", Local:=True)
Set wsDestino = wbDestino.Worksheets("1")
Set wsOrigen = Worksheets("1")
Const celdaOrigen = "A1"
Const celdaDestino = "A1"
Set rngOrigen = wsOrigen.Range(celdaOrigen)
Set rngDestino = wsDestino.Range(celdaDestino)
rngOrigen.Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ThisWorkbook.Activate
ActiveSheet.Paste
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
wbDestino.Close
primero:
'SEGUNDO ARCHIVO'
On Error GoTo segundo
Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "/EXCEL/2", Local:=True)
Set wsDestino = wbDestino.Worksheets("2")
Set wsOrigen = Worksheets("2")
Set rngOrigen = wsOrigen.Range(celdaOrigen)
Set rngDestino = wsDestino.Range(celdaDestino)
rngOrigen.Select
ActiveCell.Offset(1, 0).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ThisWorkbook.Activate
ActiveSheet.Paste
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
wbDestino.Close
segundo:
'TERCER ARCHIVO'
On Error GoTo tercero
Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "/EXCEL/3", Local:=True)
Set wsDestino = wbDestino.Worksheets("3")
Set wsOrigen = Worksheets("3")
Set rngOrigen = wsOrigen.Range(celdaOrigen)
Set rngDestino = wsDestino.Range(celdaDestino)
rngOrigen.Select
ActiveCell.Offset(1, 0).Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
ThisWorkbook.Activate
ActiveSheet.Paste
Selection.End(xlDown).Select
ActiveCell.Offset(1, 0).Range("A1").Select
wbDestino.Close
tercero:
End Sub
Estimados, muy buen dia.
Les comento que estoy trabajando a una macro, la cual consiste en buscar datos de otro libro de excel, mediante el comando ActiveWorkbook.Path.
Necesito que busque 5 archivos distintos, los cuales están nombrados con números del 1 al 5. Para hacer esto, copie 5 veces el código ActiveWorkbook. El problema es que si un día solo tengo 3 archivos, la macro arroja un error al no encontrar el cuarto archivo.
Probe utilizando el comando On Error GoTo "primero" , y al final primero:
Funcionó con el primer codigo, pero el segundo utilice On Error GoTo "segundo, y no lo considera.
Sub TEST() ' ' TEST Macro Dim wbDestino As Workbook, _ wsOrigen As Excel.Worksheet, _ wsDestino As Excel.Worksheet, _ rngOrigen As Excel.Range, _ rngDestino As Excel.Range Sheets("DATA").Select Range("A1").Select On Error GoTo primero Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "/EXCEL/1", Local:=True) Set wsDestino = wbDestino.Worksheets("1") Set wsOrigen = Worksheets("1") Const celdaOrigen = "A1" Const celdaDestino = "A1" Set rngOrigen = wsOrigen.Range(celdaOrigen) Set rngDestino = wsDestino.Range(celdaDestino) rngOrigen.Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy ThisWorkbook.Activate ActiveSheet.Paste Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Range("A1").Select wbDestino.Close primero: 'SEGUNDO ARCHIVO' On Error GoTo segundo Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "/EXCEL/2", Local:=True) Set wsDestino = wbDestino.Worksheets("2") Set wsOrigen = Worksheets("2") Set rngOrigen = wsOrigen.Range(celdaOrigen) Set rngDestino = wsDestino.Range(celdaDestino) rngOrigen.Select ActiveCell.Offset(1, 0).Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy ThisWorkbook.Activate ActiveSheet.Paste Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Range("A1").Select wbDestino.Close segundo: 'TERCER ARCHIVO' On Error GoTo tercero Set wbDestino = Workbooks.Open(ActiveWorkbook.Path & "/EXCEL/3", Local:=True) Set wsDestino = wbDestino.Worksheets("3") Set wsOrigen = Worksheets("3") Set rngOrigen = wsOrigen.Range(celdaOrigen) Set rngDestino = wsDestino.Range(celdaDestino) rngOrigen.Select ActiveCell.Offset(1, 0).Range("A1").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy ThisWorkbook.Activate ActiveSheet.Paste Selection.End(xlDown).Select ActiveCell.Offset(1, 0).Range("A1").Select wbDestino.Close tercero: End Sub
Saludos!