Macro VBA excel para abrir carpeta

Tengo una carpeta la cual quisiera abrir por medio de una macro.
Sí esa carpeta la tengo almacenada en dispositivo extraíble y quisiera guardala en Mis documentos, cómo se puede hacer para que la macro abra la carpeta donde quiera que esta esté.?

1 Respuesta

Respuesta
3
Para abrir una carpeta es bastante sencillo utilizando una API
Lo primero que debes hacer es declarar la función ShellExecute
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Y luego, cuándo quieras abrir la carpeta, la abres de la siguiente forma:
ShellExecute 0, "Open", rutaCarpeta, "", "", 1
Ahora, si con "donde quiera que esta esté", te refieres a la carpeta, debes tener en consideración que la macro necesita saber la ruta a la carpeta para poder abrirla, de otra forma es imposible.
Si te refieres a la macro, no hay problemas, este código te abrirá la carpeta, si ésta existe.
Experto muchas gracias por tu pronta colaboración.
No dudo que debe servir, sin embargo estoy confundido. La macro que tengo es esta (tomada de todoexpertos pero ajustada a mi carpeta):
Sub Stock()
Dim Carpeta as string
Carpeta=("E:/warehouse/Stock"
call shell("explorer.exe"&carpeta,vbnormalfocus)
End Sub
Tengo cerca de 12 macros con los que requiero abrir diferentes carpetas. ¿Debo hacer entonces 12 veces tu rutina?
No te preocupes, esta rutina también te sirve, sólo que tienes un par de errores: Quita el paréntesis antes de "E:/warehouse/Stock" y dale un espacio al final de explorer.exe.
Finalmene te debe quedar así
Sub Stock()
   Dim Carpeta as string
   Carpeta="E:/warehouse/Stock"
   call shell("explorer.exe " & carpeta,vbnormalfocus)
End Sub

Ahora, si la utilizarás para distintas carpeta, te convendría hacerla así
Sub AbrirCarpeta(carpeta as string)  
   call shell("explorer.exe " & carpeta,vbnormalfocus)
End Sub

Y la llamada, cada vez que quieras abrir una carpea, sería
call AbrirCarpeta ("E:/warehouse/Stock") 'Para la carpeta stok
NOTA: En la ruta de la carpeta, en lugar de utilizar la barra /, utiliza la barra invertida \.
Ejemplo: E:\warehouse\Stock
Hola Experto,
Muchas gracias por tu tiempo.
La macro con la qué trabajo solo abrirá carpetas en E: ¿Cierto? Cómo organizo tu macro y la que tengo, para abrir carpetas especificas, ¿dónde quiera que haya almacenado el archivo excel con la macro?
No importa donde esté la macro, lo importante es que le des la ruta en la que está la carpeta que quieres abrir.
Ejemplos:
Si tienes una carpeta en C: llamada "mi carpeta" sería
Call AbrirCarpeta("C:\mi carpeta")
Si en J: Tuvieras una carpeta llamada "musica" sería
Call AbrirCarpeta("J:\musica")
Y así, sólo tienes que darle la ruta a la carpeta.
Y no necesitas ocupar la macro que te envié primero, sólo considera los post del 03/11/2010

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas