Bueno taribo, siento ser tan petarda, pero es que no me quiero rendir. Puesto que a ti te funciona y a mi no, lo que hice fue poner msgbox en toooodas las partes del módulo para saber en qué fallaba. Hago la prueba con la siguiente ruta:
C:\Documents and Settings\Naiara\Escritorio\prueba\CLIENTES\Presupu estos\del 0001 al 0999\0001-0099\0001-0099\0001-0009\0004
Y con el módulo me acaba cogiendo la siguiente ruta:
C:\Documents and Settings\Naiara\Escritorio\prueba\CLIENTES\Presupu estos\del 0001 al 0999\000-099\000-099\00-09\4
Y luego he probado con una ruta que se que me funciona (1200) y en el msg box me acaba saliendo esto:
C:\Documents and Settings\Naiara\Escritorio\prueba\CLIENTES\Presupu estos\del 1000 al 1999\1200-1299\1200-1299\1200-1209\1200
El módulo al final lo dejé así:
Option Compare Database
Public Function RutaCarpeta(NomCarpeta As String) As String
Dim Ruta As String
Dim Digitos(1 To 4) As String
'Guardamos por separado los digitos en el array
For i = 1 To Len(NomCarpeta)
Digitos(i) = Mid(Format(NomCarpeta, "0000"), i, 1)
Next
Ruta = "C:\Documents and Settings\Naiara\Escritorio\prueba\CLIENTES\Presupu estos\" 'del 1000 al 1999\1400-1499\1400-1409\1400
'Si el primer digito del numero pasado como string es un 0, primera carpeta. si es un 1, segunda carpeta
If Digitos(1) = 0 Then
Ruta = Ruta & "del 0001 al 0999\"
MsgBox Ruta
Else
Ruta = Ruta & "del 1000 al 1999\"
End If
'Añadimos la carpeta correspondiente al segundo digito
Ruta = Ruta & Digitos(1) & Digitos(2) & "00-" & Digitos(1) & Digitos(2) & "99\"
MsgBox Ruta
'Añadimos la carpeta correspondiente al tercer digito
Ruta = Ruta & Digitos(1) & Digitos(2) & Digitos(3) & "0-" & Digitos(1) & Digitos(2) & Digitos(3) & "9\"
MsgBox Ruta
'Por ultimo añadimos la carpeta pasada como parametro
Ruta = Ruta & NomCarpeta
MsgBox Ruta
'Y se lo devolvemos a la funcion
RutaCarpeta = Ruta
MsgBox Ruta
End Function