Bienvenido a la mayor comunidad de usuarios EXCEL

Regístrate ahora y podrás: / 💪 Hacer preguntas a los expertos / ⬇️ Descargar ejemplos y plantillas / 🏅 Acceder a contenidos premium

Regístrate gratis

Activar Workbook con Input Box

Osvami

New member
Buenos días y muchas gracias por vuestra atención:

Quiero activar un libro ya abierto preguntando con Input Box parte del nombre:
- Tengo varios archivos de Excel que se llaman : "19 Registro Indicadores.xlsx", "20 Registro Indicadores.xlsx", ... etc
- Quiero consultar datos de uno de ellos con Input Box solo poniendo el año: "19", "20", ....
- Lo mismo para las hojas del libro.

El resto de la macro ya la tengo y lo que tendría que modificar es este código, que tal cual funciona:

'ENCABEZADOS NUEVO LIBRO
'activo la hoja donde están mis datos
Workbooks("21 Registro Indicadores.xlsx").Activate
Sheets("ENER 21").Activate


Muchas gracias.

Saludos
 

Osvami

New member
cambia esta parte:

por esta otra:
Código:
  On Error Resume Next
  Workbooks(InputBox("ingresa numero") & " registro indicadores.xlsx").Activate

el resto... (ya lo conoces)
Muchas gracias, Hector.
Sobre todo por la rapidez. Cuando se está atrancado se agradece también.
Funciona tanto la InputBox como, y esto es en lo que más embarrancao estaba, la concatenación con el & de la variable con el resto del texto.
Al final, siguiendo esto modifiqué de la siguiente forma que además me vale para Sheets, que también las tengo con número de año.
Resultado final que funciona:

Código:
'definir las variables de texto
 Dim i As Integer
 Dim j As Integer
 Dim tx1 As String
 Dim tx2 As String
 Dim tx3 As String
   
'inicializo la variable j
j = 2
tx1 = InputBox("Buscar NIMA:")
tx2 = InputBox("Buscar LER:")
tx3 = InputBox("Año:")

'crear libro EXCEL nuevo "Resultados00.xlsx"
Set Resultados00 = Workbooks.Add
    With Resultados00
    .Title = "Resultados00"
    .Subject = "Hoja1"
    .SaveAs Filename:="Resultados00.xlsx"
    End With
    
    
MsgBox ("El Nombre del Libro es " & ActiveWorkbook.Name)
MsgBox ("La ruta del Libro es " & ActiveWorkbook.Path)
MsgBox ("Variable año + archivo:" & tx3)
    
   'ENCABEZADOS NUEVO LIBRO
        'activo la hoja donde están mis datos
            ' Workbooks("21 Registro Final.xlsx").Activate
                ' Sheets("ENER 21").Activate
               
  On Error Resume Next
  Workbooks(tx3 & " Registro Final.xls").Activate
  Sheets("ENER " & tx3).Activate
  MsgBox ("El Nombre del Libro es " & ActiveWorkbook.Name)
         'copio la fila de A a AN
                Range(Cells(12, "A"), Cells(12, "AN")).Copy
        'activo la hoja donde copio los datos
            Workbooks("Resultados00.xlsx").Activate
                Sheets("Hoja1").Activate
         'pegar la fila de A a AN -con FORMATO de ancho y origen-
                 Range(Cells(1, "A"), Cells(1, "AN")).PasteSpecial xlPasteColumnWidths
                 Range(Cells(1, "A"), Cells(1, "AN")).PasteSpecial xlPasteAllUsingSourceTheme
                 
    'comienzo el bucle1 para ENERO
    For i = 13 To 250
        
        'ENERO - activo la hoja donde están mis datos
        Workbooks(tx3 & " Registro Final.xls").Activate
        Sheets("ENER " & tx3).Activate
            
            'compruebo que el valor del NIMA y LER coinciden (el LER con instrucción si celda con texto está esa cadena)
            'If Cells(i, "F").Value = tx1 And InStr(1, Cells(i, "K").Value, tx2) > 0 Then
                If InStr(1, Cells(i, "F").Value, tx1) > 0 And InStr(1, Cells(i, "K").Value, tx2) > 0 Then
                
                'copio la fila desde columna A a AN
                Range(Cells(i, "A"), Cells(i, "AN")).Copy
                
                'selecciono la hoja donde quiero pegar y después la celda con la variable j
                ' que va aumentando en el último paso cada vez que se pega una fila
                Workbooks("Resultados00.xlsx").Activate
                Sheets("Hoja1").Activate
                    Cells(j, "A").Select
                'pego la fila que hemos copiado
                ActiveSheet.Paste
                
                'aumento la variable j para que vaya a la siguiente fila de la hoja filtros
                'cuando encuentre una nueva fila que cumple con la condición de edad
                j = j + 1
                    
          
            End If
    Next


Hay cosas que evidentemente tengo que pulir.
Os iré consultando.
Muchas gracias
 

Temas similares

Arriba