preguntar directorio

07/09/2004 - 18:50 por Jorge M | Informe spam
Buenos días a todos.

Tengo este código que me dieron en este foro en donde el
Sub del final es un ejemplo de cómo funciona el
procedimiento. Este procedimiento siempre me pregunta el
directorio y se para en Mi PC. La pregunta es, cómo puedo
hacer o en qué parte del código le digo que me empiece a
preguntar desde otra ruta o directorio?

Gracias por la colaboración.


Option Private Module
' las 'llamadas' a las API's '
Declare Function BuscarDirectorio _
Lib "Shell32.dll" _
Alias "SHGetPathFromIDListA" ( _
ByVal IDRuta As Long, _
ByVal TextoRuta As String) As Long
Declare Function ExplorarDirectorios _
Lib "Shell32.dll" _
Alias "SHBrowseForFolderA" ( _
ByRef BrowseInfo As InfoNavegar) As Long
' un tipo de datos definido por el usuario '
Type InfoNavegar
Propietario As Long
IDRutaRaiz As Long
DlgNombre As String
DlgTexto As String
Devolver As Long
NumRuta As Long
Parametro As Long
Imagen As Long
End Type
' la funcion que 'obtiene' el nombre del directorio [si]
seleccionado '
Function ObtenerDirectorio(Optional ByVal Texto As
String) As String
Dim Iniciar_en As InfoNavegar, _
Ruta As String, _
Directorio As Long, _
Buscar_en As Long, _
Largo As Integer, _
Seleccionado As String
Iniciar_en.IDRutaRaiz = 0&
If IsMissing(Texto) Or Texto = "" _
Then Iniciar_en.DlgTexto = "Selecciona un
directorio." _
Else Iniciar_en.DlgTexto = Texto
Iniciar_en.Devolver = &H1
Buscar_en = ExplorarDirectorios(Iniciar_en)
Ruta = Space$(512)
Directorio = BuscarDirectorio(Buscar_en, Ruta)
If Directorio Then
Largo = InStr(Ruta, Chr$(0))
Seleccionado = Left(Ruta, Largo - 1)
If Right(Seleccionado, 1) <> "\" Then Seleccionado =
Seleccionado & "\"
Else: Seleccionado = ""
End If
ObtenerDirectorio = Seleccionado
End Function


Sub PruebaAPIs(): Dim Directorio As String
Directorio = ObtenerDirectorio("Selecciona un
directorio...")
If Directorio <> "" Then
MsgBox "Se ha seleccionado el directorio:" & vbCr &
Directorio
Else: MsgBox "¡ NO se ha seleccionado ningún
directorio !!!"
End If
End Sub
 

Leer las respuestas

#1 Anonimo
07/09/2004 - 22:16 | Informe spam
Como diría un amigo mío: 'Para mayor confusión pongamos un
ejemplo'

¿Por qué no utilizas el cuadro de gialogo comun?

Abres la barra de herramientas 'cuadro de controles' y een
el icono de las herramientas (el martillo y la llave fija)
buscas el control 'microsoft common dialog control'y lo
copias en la hoja.
Mira las propiedades y métodos que tiene.
Te dejo una prueba muy elemental para que te esfuerces un
poco (se aprende más y tienes más satisfacción).

Sub PreguntarDirectorio()
With CommonDialog1
.DialogTitle = "PRUEBA"
.InitDir = "e:\Excel"
.ShowOpen
End With

End Sub






Buenos días a todos.

Tengo este código que me dieron en este foro en donde el
Sub del final es un ejemplo de cómo funciona el
procedimiento. Este procedimiento siempre me pregunta el
directorio y se para en Mi PC. La pregunta es, cómo puedo
hacer o en qué parte del código le digo que me empiece a
preguntar desde otra ruta o directorio?

Gracias por la colaboración.


Option Private Module
' las 'llamadas' a las API's '
Declare Function BuscarDirectorio _
Lib "Shell32.dll" _
Alias "SHGetPathFromIDListA" ( _
ByVal IDRuta As Long, _
ByVal TextoRuta As String) As Long
Declare Function ExplorarDirectorios _
Lib "Shell32.dll" _
Alias "SHBrowseForFolderA" ( _
ByRef BrowseInfo As InfoNavegar) As Long
' un tipo de datos definido por el usuario '
Type InfoNavegar
Propietario As Long
IDRutaRaiz As Long
DlgNombre As String
DlgTexto As String
Devolver As Long
NumRuta As Long
Parametro As Long
Imagen As Long
End Type
' la funcion que 'obtiene' el nombre del directorio [si]
seleccionado '
Function ObtenerDirectorio(Optional ByVal Texto As
String) As String
Dim Iniciar_en As InfoNavegar, _
Ruta As String, _
Directorio As Long, _
Buscar_en As Long, _
Largo As Integer, _
Seleccionado As String
Iniciar_en.IDRutaRaiz = 0&
If IsMissing(Texto) Or Texto = "" _
Then Iniciar_en.DlgTexto = "Selecciona un
directorio." _
Else Iniciar_en.DlgTexto = Texto
Iniciar_en.Devolver = &H1
Buscar_en = ExplorarDirectorios(Iniciar_en)
Ruta = Space$(512)
Directorio = BuscarDirectorio(Buscar_en, Ruta)
If Directorio Then
Largo = InStr(Ruta, Chr$(0))
Seleccionado = Left(Ruta, Largo - 1)
If Right(Seleccionado, 1) <> "\" Then Seleccionado =
Seleccionado & "\"
Else: Seleccionado = ""
End If
ObtenerDirectorio = Seleccionado
End Function


Sub PruebaAPIs(): Dim Directorio As String
Directorio = ObtenerDirectorio("Selecciona un
directorio...")
If Directorio <> "" Then
MsgBox "Se ha seleccionado el directorio:" & vbCr &
Directorio
Else: MsgBox "¡ NO se ha seleccionado ningún
directorio !!!"
End If
End Sub


.

Preguntas similares