martes, 19 de abril de 2022

Obtener la ruta directorio y nombre del archivo con la función InStrRev y GetOpenFilename con macros

La función InStrRev se utiliza para recuperar el número de la posición de una cadena de caracteres que se encuentra dentro de otra cadena más larga.  La función requiere de 4 parámetros donde los 2 últimos no son obligatorios.

La sintaxis es: InStrRev("cadena donde se va a llevar acabo la búsqueda", "cadena que se desea buscar", posición de inicio (opcional),  tipo de comparación (opcional))

Ejemplo: 

Sub BuscarPosicion()
Dim strcadena As String
strcadena = "Hoy es un día maravilloso como para estar triste."
MsgBox InStrRev(strcadena, "maravilloso")
End Sub

Como resultado obtendremos: 15. Quince es la posición inicial de la palabra maravilloso.

Ahora una vez comprendido lo anterior con el método GetOpenFilename y funciones left y right junto con la función InStrRev obtendremos:

1.-La ruta de un archivo.
2.-Directorio donde se encuentra el archivo.
3.-Nombre del archivo.

Para ello seguimos los siguientes pasos:

1.-Crear un formulario tal como se muestra:

Ruta, directorio y nombre de un archivo con GetOpenFilename, left, right y la función InStrRev

2.-Escribimos el siguiente código:

Private Sub cmdexaminar_Click()
'Obtenemos la ruta completa del archivo con OpenFilename
'Me.txtruta.Text = Application.GetOpenFilename()
'Obtenemos el número de la posición inicial de la cadena \ (Si la cadena "\" se repite busca la última)
Me.txtposicion.Text = InStrRev(Me.txtruta.Text, "\")
'Obtenemos de izquierda a derecha el directorio
Me.txtcarpeta.Text = Left(Me.txtruta.Text, InStrRev(Me.txtruta.Text, "\"))
'Obtenemos el nombre del archivo de derecha a izquierda
Me.txtarchivo.Text = Right(Me.txtruta.Text, Len(Me.txtruta.Text) - (InStrRev(Me.txtruta.Text, "\")))
End Sub

3.-Ejecutamos el formulario F5, y como resultado podrás darte cuenta del uso adecuado de la función InStrRev como obtener el valor inicial de una cadena y combinado con GetOpenFileName, left y right es posible obtener la ruta, el directorio y el nombre de un archivo.

Otra forma de seleccionar un directorio es el siguiente codigo:

Sub GuardarRuta()
Dim objruta As Object
Set objruta = Application.FileDialog(msoFileDialogFolderPicker)
objruta.Show
'Si no selecciona carpeta salimos
If objruta.SelectedItems.Count = 0 Then Exit Sub
'Guardamos ruta a esta carpeta
MsgBox objruta.SelectedItems(1)
End Sub


Seleccionar un directorio



 





No hay comentarios.:

Publicar un comentario