Como recorrer una cadena y determinar nombre de archivo





Anteriormente se mostró una macro que permite recorrer una cadena de texto estableciendo cual es la extensión de un archivo, hoy muestro como recorrer una cadena de caracteres o string y determinar el nombre del archivo sin incluir la extensión, quizás también sea útil: Como recorrer una cadena de caracteres reemplazando mayúsculas por minúsculas o macro que extrae cadenas de texto o string.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Recordemos que las principales funciones de VBA que permiten trabajar con cadenas de texto son las siguientes:

Len: que permite determinar el largo de una cadena
Mid: que permite extraer texto de una cadena de texto empezando en un determinado lugar y estableciendo la cantidad de caracteres a extraer
Instr: que permite determinar la posición de un carácter o cadena de caracteres
StrReverse: permite dar vuelta una cadena de caracteres
Right: permite extraer datos a la derecha
Left: permite extraer datos a la izquierda
Trim: permite eliminar espacios a la izquierda y derecha de una cadena de texto
LTrim: elimina espacios a la izquierda de una cadena de texto o string
RTrim: elimina espacios a la derecha de una cadena de texto o string

Para comprender en forma más fácil es conveniente bajar el ejemplo el cual se podrá hacer en forma absolutamente GRATIS, al igual que todos los ejemplos de esta WEB, sin tener que estar inscribiéndose ni nada por el estilo, aunque sugiero que suscribas a la web para recibir en tu mail cada vez que se suba un ejemplo, asimismo sugiero suscribas al canal de YouTube.

Lo más fácil para entender el ejemplo es ejecutar la macro paso a paso (con F8 se recorre todas las líneas de la maco paso a paso), al recorrer linea por linea se puede ir viendo el valor que van tomando las variables, en el ejemplo se hace un bucle hasta la última fila con datos.

En la variable cad se carga la cadena de texto dada vuelta

cad = StrReverse(a.Range("A" & x))

En la variable lug se determina donde se encuentra el punto, se debe tener en cuenta que la cadena de texto es el nombre de un archivo el cual incluye la extensión, es por ello que se determinar donde está el punto para extraer el resto de la cadena de texto, una vez logrado eso se tiene el nombre del archivo sin la extensión.

lug = InStr(cad, ".")

En la variable nomarch se carga la cadena de texto que extrae los caracteres de la cadena de texto o string a partir del carácter donde se encontró el punto.

nomarch = Mid(cad, lug + 1)

Por último con StrReverse(nomarch) se da vuelta la cadena de caracteres y se obtiene el nombre del archivo sin la extensión.

Existe otra forma de determinar el nombre de un archivo, pero se utilizó esta forma, porque la intensión es mostrar como recorrer cadena de caracteres o string.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo Formulario que requiere password para realizar procedimientobuscar en listbox mientras escribes en textbox, como crear una factura o sale invoice y grabar guardar PDF XLS y enviar por mailconectar Excel con Access y muchos ejemplos más.








Código que se inserta en un módulo




Sub DeterminaNombreArchivo()
Dim Tex As Variant, Car As Variant, Lar As Integer
Application.ScreenUpdating = False
On Error Resume Next
Set a = Sheets("Hoja1")
uf = a.Range("A" & Rows.Count).End(xlUp).Row
For x = 2 To uf
cad = StrReverse(a.Range("A" & x))
Lar = Len(cad)
lug = InStr(cad, ".")
nomarch = Mid(cad, lug + 1)
a.Range("B" & x) = StrReverse(nomarch)
Next x
Application.ScreenUpdating = True
End Sub


Sub borra()
Range("B1:B1000").ClearContents
End Sub



Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.


If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.


Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends