Visual Basic para Aplicaciones - Buscar carpeta en directorio por nombre de carpeta

Life is soft - evento anual de software empresarial
 
Vista:

Buscar carpeta en directorio por nombre de carpeta

Publicado por Esther (18 intervenciones) el 23/08/2012 17:25:55
Saludos, ya tengo hecho lo de buscar si existe una carpeta en una ruta, y si no existe la crea, pero ahora me piden que busque solo que contenga el numero de proyecto (sin el nombre y el cliente, q es lo q incluye el nombre d la carpeta), es decir, que el nombre de la carpeta contenga la cadena de texto que tengo en una variable. Como lo puedo hacer? Ahora lo tengo con mkdir, pero no se como decirle que busque si contiene. Agradecería vuestra ayuda, llevo varios dias buscando por foros y nada, por lo que me he decidido a preguntar
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Buscar carpeta en directorio por nombre de carpeta

Publicado por cmgcharli (51 intervenciones) el 24/08/2012 08:21:51
Utiliza los caractetes comodi * ó ?

Por ejemplo si el nombre de la carpeta es 356JesusJuan y tu variable contiene Variable=356 la carpeta a buscar seria Variable* me imagino que para buscar carpetas utilizas la funcion Dir()

Dir[(nombre_ruta[, atributos])]

En el ejemplo seria

Dim A as String
Dim Ruta as string
Ruta ="C:\"

A=Dir(Ruta & Variable & "*",vbDirectory)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar carpeta en directorio por nombre de carpeta

Publicado por Esther (18 intervenciones) el 24/08/2012 13:15:00
MUCHAS GRACIAS cmgcharli,

No había contemplado la posibilidad que me dices, pero he hecho pruebas y no se como hacerlo, yo tengo creado el siguiente codigo (ABAJO):

Entonces lo que quiero no es q solo me mire si existe la carpeta por nombre idéntico, sinó q con que exista la carpeta por el numero de proyecto es suficiente, que lo tengo creado con la variable numero, por eso lo de la expresión q contenga, pero claro no se donde colocarlo en mi código... y si necesito otro if... a ver si me puedes echar un cable porqu estoy hecha un lío.

----------------------------------

numero = Range("N2").Value
proyecto = Range("p2").Value
cliente = Range("n1").Value
nombre = Range("n2").Value & "-" & Range("S4").Value & " " & "Escandallo - " & Range("P2").Value & " - " & Range("N1").Value

destino = "\\atpsrv\COMERCIAL\PROYECTOS COMERCIAL\PROYECTOS" & "\" & numero + " " + proyecto + " " + "-" + " " + cliente + "\" + "Escandallos"
destino0 = "\\atpsrv\COMERCIAL\PROYECTOS COMERCIAL\PROYECTOS\" & numero
archivo = destino & "\" + nombre + ".xlsm"
archivo2 = destino & "\" + nombre + ".pdf"
Worksheets(1).Select




Set fso = CreateObject("Scripting.FileSystemObject")
If fso.fileexists(archivo) Then
MsgBox "El archivo ya existe, se ha creado un nuevo archivo de excel por si quiere guardarlo provisionalmente"
Exit Sub
Else
On Error Resume Next



oldName = "ESCANDALLO"
newName1 = Range("N2").Value
newName2 = Range("S4").Value
newName = newName1 & "-" & newName2




MkDir _
"\\atpsrv\COMERCIAL\PROYECTOS COMERCIAL\PROYECTOS" & "\" & numero + " " + proyecto + " " + "-" + " " + cliente


MkDir _
"\\atpsrv\COMERCIAL\PROYECTOS COMERCIAL\PROYECTOS" & "\" & numero + " " + proyecto + " " + "-" + " " + cliente + "\" + "Escandallos"


ActiveWorkbook.SaveAs Filename:= _
archivo _
, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

ActiveSheet.Name = newName
ActiveWorkbook.Save
ActiveWorkbook.Close

Windows("Base de Costes.xlsm").Activate

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
archivo2 _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

End If
---------
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Buscar carpeta en directorio por nombre de carpeta

Publicado por Alberto (5 intervenciones) el 24/08/2012 14:30:26
Yo lo haria con la función InStr por ejemplo, ya que no es necesario una expresion regular

pos=InStr(pos_inicial, codigo_proyecto, ruta, vbTextCompare)
Si pos es 0 es que ruta no contiene el código de proyecto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JuanC

Buscar carpeta en directorio por nombre de carpeta

Publicado por JuanC (565 intervenciones) el 24/08/2012 20:42:27
también podrías usar el operador Like...

Saludos, desde Baires, JuanC
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar carpeta en directorio por nombre de carpeta

Publicado por Esther (18 intervenciones) el 27/08/2012 12:02:28
Hola Alberto, he probado la funcion q comentas pero para mi caso no me vale, ya que quiero comparar un texto dentro de una variable, y ver si alguna carpeta dentro de una ruta contiene este texto. Y en este caso compara solo el nombre de la ruta con el texto, no las carpetas q hay en esa ruta... uff no se como hacerlo. GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Buscar carpeta en directorio por nombre de carpeta

Publicado por Alberto (5 intervenciones) el 27/08/2012 12:24:05
Hola Esther,

Para obtener las rutas de comparación posibles tienes herramientas que te permiten recorrer directorios y obtener información.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar carpeta en directorio por nombre de carpeta

Publicado por Esther (18 intervenciones) el 27/08/2012 13:16:01
Saludos cmgcharli no me acaba de funcionar dir poniendo la variable y luego & "*" , para decirle que contiene la variable... , no se que estoy haciendo mal, pero los caracteres comodin despues de una variable no los acaba de coger bien
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar carpeta en directorio por nombre de carpeta

Publicado por Esther (18 intervenciones) el 27/08/2012 13:38:58
Saludos, alguien me puede decir que es lo que estoy haciendo mal?

----------------------------
If Len(Dir(destino0 & "*", vbDirectory)) = 0 Then
MsgBox "Este archivo NO existe"
Else
MsgBox "Este archivo existe"
End If
-------------------------------


Donde destino0 = \\atpsrv\proyectos\cliente\12-1234
Es decir, lo que quiero es buscar todas las carpetas dentro de \\atpsrv\proyectos\cliente\ que contengan una carpeta que sea igual, o contenga 12-1234, por eso lo de añadir el asterisco, pero no me hace bien la comparación....
A ver si me podeis ayudar. GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar carpeta en directorio por nombre de carpeta

Publicado por Esther (18 intervenciones) el 27/08/2012 16:31:09
Ya lo he solucionado con Dir y "*", GRACIAS POR VUESTRA AYUDA

Ahora al modificar esto me sale otro error q nada tiene q ver y q antes no me salía.... pero bueno... a seguir peleando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar