Macro para abrir archivos de Excel según el contenido de una celda

Necesito de su acostumbrada colaboración para la siguiente rutina.

En la misma carpeta tengo los siguientes archivos:

ArchivoPrincipal.xlsx

Archivo1.xlsx

Archivo2.xlsx

Archivo3.xlsx

Archivo4.xlsx

Archivo5.xlsx

En el ArchivoPrincipal.xlsx en la hoja “Matriz” tengo en determinada columna los nombres de los Archivos del 1 al 5, necesito al poner el cursor en la celda X (contienen un nombre de archivo) abra un cuadro de dialogo confirmando el nombre del archivo que se va a abrir, al aceptar busque el archivo y lo abra en la hoja “Rate” que todos los archivos la tienen.

1 respuesta

Respuesta
1

Te anexo la macro para que la pongas en los eventos de tu hoja

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Por.Dante Amor
    If Target.Count > 1 Then Exit Sub
    If Target.Value = "" Then Exit Sub
    u = Range("A" & Rows.Count).End(xlUp).Row
    If Not Intersect(Target, Range("A2:A" & u)) Is Nothing Then
        res = MsgBox("Confirma que vas a abrir el archivo: " & Target, vbYesNo, "ABRIR ARCHIVO")
        If res = vbYes Then
            ruta = ThisWorkbook.Path & "\"
            If Dir(ruta & Target) = "" Then
                MsgBox "No existe el archivo: " & Target, vbExclamation
            Else
                Application.ScreenUpdating = False
                Workbooks.Open ruta & Target
                Sheets("rate").Select
                Application.ScreenUpdating = True
            End If
        End If
    End If
End Sub

Cambia en la macro la letra "A" por la columna en donde tienes tus nombres de archivo

If Not Intersect(Target, Range("A2:A" & u)) Is Nothing Then


Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
    1. Del lado derecho copia la macro


Hola Dante, debo cambiar ambas líneas la letra "A" de la rutina para que se ejecute en otra columna?

    u = Range("A" & Rows.Count).End(xlUp).Row
    If Not Intersect(Target, Range("A2:A" & u)) Is Nothing Then

Quedaria asi si fuera la columna "T":

    u = Range("T" & Rows.Count).End(xlUp).Row
    If Not Intersect(Target, Range("T2:T" & u)) Is Nothing Then

Estoy bien?

Es correcto.

Para otras ocasiones, es importante que pongas los datos completos, nombres de hojas, columnas, filas, etc, de esa forma puedo preparar la macro completa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas