Buscar una hoja y asignarla para que lo use mi macro

tengo una macro que se llama "limpiador"y una hoja excel que se llama "temporal.xls"
nosotros eventualmente vamos a recibir una hoja que se llamara:a-b.xls luego c-d.xls etc
Tenemos que seleccionar todas las celdas de la hoja a-b.xls y pegarlas en "temporal.xls",
así nos evitamos posibles errores por nombre de libro u hoja incorrectos o formatos Excel.
Guardamos los cambios y cerramos el libro "temporal.xls" para proceder a ejecutar la macro
Si en la ubicación ya hay un archivo tabla.xls o cantidad.xls saldrá una ventana
preguntando si desea reemplazarlas, pulsar SI para ambos casos.
Tras finalizar la ejecución veremos que se han creado los archivos tabla.xlsx y
cantidad.xlsx con los campos que nos interesa visualizar de la tabla original.
el problema que tengo es que :
El programa se alimenta del archivo "temporal.xls" que debe estar contenido en una
carpeta previamente cuya ruta hay que especificar en el código y cuyo Worksheet
debe llamarse Hoja1.
la mejora que estoy buscando es programarlo de tal forma que el usuario escoja el
archivo que se quiere limpiar pudiendo éste estar ubicado en cualquier dirección y
aceptando cualquier nombre de archivo.
ya que el estar habriendo las hojas a-b.xls luego c-d.xls etc y luego pegarlos en la hoja
"temporal.xls" para luego ejecutar la macro
es posible que esto se pueda?
muchas gracias por todo
este es mi macro
Sub vincular_tablas()
Dim Fila As Long
Dim Col As Long
Dim X As String
'Application.Visible = False
On Error GoTo controlerror
'Crear nuevo archivo
Workbooks.Add
ChDir "C:\"
ActiveWorkbook.SaveAs Filename:="C:\Excel\tabla.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
'Abrir tabla SAP
Workbooks.Open "C:\Excel\temporal.xlsx"
'Coger columnas que nos interesan de "temporal.xlsx" y pegarlos en "tabla.xls"
Workbooks("temporal.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("D:D").Select
Selection.Copy
Workbooks("tabla.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("A:A").Select
ActiveSheet.Paste
Workbooks("temporal.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("G:G").Select
Selection.Copy
Workbooks("tabla.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("B:B").Select
ActiveSheet.Paste
'Elimino filas no válidas(en blanco, vibs, XXXproveedor(obsoletos), num de mat no validos
Workbooks("tabla.xlsx").Worksheets("Hoja1").Activate
Cells(1, 1).EntireRow.Delete
For Fila = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
X = Left(Cells(Fila, 6), 3)
If WorksheetFunction.CountA(ActiveSheet.Rows(Fila)) = 0 Or X = "XXX" Or Cells(Fila, 1) = "Material" Or Cells(Fila, 1) < 300 Or Cells(Fila, 2) = "PedOfer" Then
Cells(Fila, 1).EntireRow.Delete
End If
Next Fila
Workbooks("temporal.xlsx").Close SaveChanges:=False
Workbooks("tabla.xlsx").Close SaveChanges:=True
'crear archivo cantidad-vip SAP
Workbooks.Add
ChDir "C:\"
ActiveWorkbook.SaveAs Filename:="C:\Excel\cantidad.xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
'Abrir tabla SAP
Workbooks.Open "C:\Excel\tabla.xlsx"
'Coger columnas que nos interesan de "tabla.xls" y pegarlos en "cantidad.xls"
Workbooks("tabla.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("A:A").Select
Selection.Copy
Workbooks("cantidad.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("A:A").Select
ActiveSheet.Paste
Workbooks("tabla.xlsx").Worksheets("Hoja1").Activate
Worksheets("Hoja1").Columns("J:J").Delete
Workbooks("tabla.xlsx").Worksheets("Hoja1").Activate
Cells(1, 1) = "MATERIAL"
Cells(1, 2) = "DESCRIPCIÓN"
Workbooks("cantidad.xlsx").Worksheets("Hoja1").Activate
Cells(1, 1) = "MATERIAL"
Cells(1, 2) = "DESCRIPCIÓN"
'Application.Visible = True
Exit Sub
controlerror:
Select Case Err.Number
Case 1004
MsgBox "Cerrar tabla y cantidad antes de ejecutar"
End Select
End Sub

Añade tu respuesta

Haz clic para o