Acceder a una hoja con nombre distinto

Quisiera hacer una macro en la que tanto el nombre del libro como el nombre de la hoja es siempre distinto si bien siempre comienza con la misma estructura. Es decir, el nombre del libro y la hoja siempre tiene el comienzo DATOS y lo que cambia es el MES y el Año. El problema que tengo es que la Macro trabaja con varios Libros y no sé como acceder a un libro no activo y que no se llama siempre igual

Respuesta
1

Visita:

Excel y Macros


Quieres abrir el archivo o el archivo ya está abierto?


Recomendaciones:

https://m.youtube.com/watch?v=onTZPFepEqA&t=3s 

https://m.youtube.com/watch?v=swZY8xEQCe4&t=327s 

https://m.youtube.com/watch?v=fkMDV64YyE0 


Sal u dos

Dante Amor

El archivo lo tengo abierto

Tengo tres archivos abiertos. En cada uno de ellos un solo libro y cada uno de ellos se llama siempre de manera distinta, por lo que necesito renombrarlos para después poder trabajar con ellos y moverme en ellos.

Muchas gracias

No estoy entendiendo muy bien qué necesitas.

Aquí dices:

"Es decir, el nombre del libro y la hoja siempre tiene el comienzo DATOS y lo que cambia es el MES y el Año. El problema que tengo es que la Macro trabaja con varios Libros y no sé como acceder a un libro no activo y que no se llama siempre igual"

Pero acá dices:

"Por lo que necesito renombrarlos para después poder trabajar con ellos"

----- ---

¿Entonces quieres encontrar el libro y la hoja que empieza con la palabra "DATOS" o quieres renombrar un libro?

----- ---

Con la siguiente macro encuentras, de todos los libros abiertos, el libro que en su nombre empieza con la palabra "DATOS", también encuentra dentro de ese libro, la hoja que en su nombre empieza con la palabra "DATOS".

Entonces en el objeto wb tendrás el libro y en el objeto sh tendrás la hoja:

Sub seleccionar_Libro()
  Dim wb As Workbook
  Dim sh As Worksheet
  '
  For Each wb In Workbooks
    If UCase(Left(wb.Name, 5)) = "DATOS" Then
      For Each sh In wb.Sheets
        If UCase(Left(sh.Name, 5)) = "DATOS" Then
          MsgBox "El libro se llama: " & wb.Name & vbCr & _
                 "La hoja se llama: " & sh.Name
        End If
      Next
    End If
  Next
End Sub

Revisa lo siguiente para el manejo de objetos:

Sal u dos

Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas