¿Cómo abrir otros otros libros de excel de acuerdo a 4 variables y que de éstos se cumplán dos condiciones?

Acá siempre necesitando su valiosa colaboración.

En esta oportunidad deseo saber cómo puedo abrir otros libros de excel partiendo de 4 variables y que de éstas se cumplan 2 para abrir un libro específico. Les explico el caso:

Se tienen 3 libros (Libro A, Libro B y Libro C) ubicados en el escritorio los cuales poseen 12 hojas nombrados exactamente con los meses del año (Enero hasta Diciembre), deben abrirse mediante una macro que se ecuentra en el libro D. El punto es que los libros A, B y C se abran de acuerdo al cumplimiento de dos criterios:

1°- El nombre del libro

2°- La hoja nombrada con el mes que se necesita se active.

Le coloco a la pregunta 4 variables porque los 3 libros serían 3 variables y mas la hoja que se activará ya sea de un libro u otro es la variable 4.

Hasta ahorita y por lo poco que conozco en el tema de programación en VBA lo que puedo hacer es esto:

Private Sub Abrir()
If Sheets("Hoja3").Range("D3") = "LibroA" And Sheets("Hoja3").Range("D4") = "Marzo" Then
Application.ScreenUpdating = False
Workbooks.Open "C:\Users\xxxxx\Desktop\LibroA.xlsm"
Workbooks("LibroA").Sheets("Marzo").Activate

Esto implica que tendría que reesccibir este código 12 veces para cada libro, eso serían demasiadas líneas de código. ¿Cómo se podría simplificar? Les dejo una imagen que muestra como sería el cuadro del libro D para abrir los otros libros.

1 respuesta

Respuesta
1

[email protected]  ok escribe solo la pregunta y lo que require numerado

Buen día amigo aneudys. Acabo de enviar los puntos requeridos a tu correo

Para las futuras generaciones

If Range("D3") = "" Or Range("D4") = "" Then Exit Sub
If Range("D4") <> "" and Range("D3") <> "" Then
Ruta = "C:\Users\martinez\Desktop\trabajar\rntt\"
nombre = Range("D3") & ".xls"
x = Range("D4")
Workbooks.Open Filename:=Ruta & nombre
Sheets(x).Select
Else
salida:
MsgBox "no existe este libro" & " o " & "hoja favor verificar nombres en celda"   
End If

recueda valora para cerrar la pregunta

Perfecto!!!! amigo Aneudys......... disculpa que te siga molestando y si se desea ocultar las demas hojas y dejar visible únicamente la hoja activa como quedaría. Tendría que asignarse otra variable por ejemplo:

Sheets(variable).Visible=False? 

Y=" "

If y <> x then

Sheets(y).Visible=False

Esto nada más es una idea, de hecho no me funciona... podría hecerse lo que comento?

Seria algo así

For Each hoja In Worksheets
If hoja.Name <> Sheets(x).Name Then
hoja.Visible = xlSheetVeryHidden
End If
Next

eso seria en el caso de la macro que ten envie

la macro ente seri asi

If Range("D3") = "" Or Range("D4") = "" Then Exit Sub
If Range("D4") <> "" and Range("D3") <> "" Then
Ruta = "C:\Users\martinez\Desktop\trabajar\rntt\"
nombre = Range("D3") & ".xls"
x = Range("D4")
Workbooks.Open Filename:=Ruta & nombre
Sheets(x).Select
For Each hoja In Worksheets
If hoja.Name <> Sheets(x).Name Then
hoja.Visible = xlSheetVeryHidden
End If
Next
Else
salida:
MsgBox "no existe este libro" & " o " & "hoja favor verificar nombres en celda"   
End If

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas