** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - crear directorio en servidor
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradocrear directorio en servidor

 Responder Responder
Autor
Mensaje
pepepot Ver desplegable
Asiduo
Asiduo


Unido: 24/Noviembre/2006
Estado: Sin conexión
Puntos: 244
Enlace directo a este mensaje Tema: crear directorio en servidor
    Enviado: 13/Marzo/2019 a las 14:43
Hola

He intentado utilizar una función copiada en este mismo foro y me da un error que no logro solventar.
El error es "Error de compilación: Error de tipo: se esperaba una matriz o un tipo definido por el usuario" y me marca la función Trim de la línea ==>Carpetas = Split(Trim(strRuta), "\")



La función sería

'*******************************************************************************
'* CrearRuta
'* Comprueba si existe la ruta pasada como parámetro y si es necesario la crea
'* Argumentos: strRuta => Ruta a crear
'* uso: CrearRuta C:\Mis documentos\Prueba
'* ESH 13/03/05 22:32
'*******************************************************************************
Public Function CrearRuta(strRuta As String) As String
Dim fso As Object
Dim Carpetas As Variant
Dim i As Integer
Dim strUnidad As String
Dim strCarpeta As String
Dim strDriveTemp As String

On Error GoTo CrearRuta_TratamientoErrores
CrearRuta = ""
Set fso = CreateObject("Scripting.FileSystemObject")

'------|-------------------------------------------------------|
'------| 'extraigo la unidad de disco
strUnidad = fso.GetDriveName(strRuta) & "\"
'------|-------------------------------------------------------

'Adicionado: Para averiguar si existe la carpeta de la aplicaicion en el Servidor
If InStr(strUnidad, ":") = 0 Then
   strDriveTemp = Mid(strUnidad, 1, Len(strUnidad) - 1)
   If Not fso.FolderExists(strUnidad) Then MsgBox "No Existe la carpeta " & Mid(strDriveTemp, InStrRev(strDriveTemp, "\") + 1) & _
                                     " en el Servidor " & Mid(strDriveTemp, 3, InStrRev(strDriveTemp, "\") - 3) & vbCrLf & vbCrLf & _
                                     "Creé primero la Carpeta de la Aplicacion en el Servidor", vbCritical + vbOKOnly, "Error!": Exit Function
   strRuta = Replace(strRuta, strUnidad, "\")
End If
' troceo la ruta
Carpetas = Split(Trim(strRuta), "\")
' compruebo si existen las distintas carpetas y en su defecto las creo
strCarpeta = strUnidad
For i = 1 To UBound(Carpetas)
   If Len(Carpetas(i)) > 0 Then
      strCarpeta = fso.BuildPath(strCarpeta, Carpetas(i))
      If Not fso.FolderExists(strCarpeta) And Len(strCarpeta) > 0 Then fso.CreateFolder strCarpeta: CrearRuta = CrearRuta & strCarpeta & vbCrLf
   End If
Next i
Set fso = Nothing
If Len(CrearRuta) > 0 Then MsgBox "Se han creado las siguientes carpetas con éxito !" & vbCrLf & vbCrLf & CrearRuta, vbInformation + vbOKOnly, "Mensaje"

CrearRuta_Salir:
   On Error GoTo 0
   Exit Function
CrearRuta_TratamientoErrores:
   MsgBox "Error " & Err.Number & " - " & Err.Description
   Resume CrearRuta_Salir
End Function


Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: ROC, NY
Estado: Sin conexión
Puntos: 3326
Enlace directo a este mensaje Enviado: 13/Marzo/2019 a las 16:59
A mi me funciona (Excel 2010)

Eso si, la función falla si intentas usar el disco BÑ y no tienes disco B, no hace nada pero no da error.

Luis
Those are my principles, and if you don't like them... well, I have others. Groucho Marx
Arriba
pepepot Ver desplegable
Asiduo
Asiduo


Unido: 24/Noviembre/2006
Estado: Sin conexión
Puntos: 244
Enlace directo a este mensaje Enviado: 13/Marzo/2019 a las 17:03
En mi caso es Access.
Arriba
buho Ver desplegable
Administrador
Administrador
Avatar
Feo

Unido: 10/Abril/2004
Localización: Estremera
Estado: Sin conexión
Puntos: 11303
Enlace directo a este mensaje Enviado: 20/Marzo/2019 a las 21:12
La rutina funciona perfectamente en Access.
La acabo de probar.

Si el error te da en la línea Carpetas = Split(Trim(strRuta), "\")
probablemente (Hay veces que ocurre así) que tengas alguna Referencia "rota" en tu proyecto
Esa línea lo que hace es crearte una matriz unidimensional ("Carpetas") con tantas subcadenas como veces aparece el carácter "\"

Por ejemplo, si la cadena es C:\hola\adios\final
la matriz variant CADENAS trendrá tres elementos: Hola, Adios y Final

En resumidas cuentas, la instrucción es correcta y lo único que te puede pasar es que alguna referencia esté rota.
Saludos
Foro Offline GRATIS:BAJAR.
Página WEB:Web
Saludos desde la cárcel de Estremera
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: en línea
Puntos: 11858
Enlace directo a este mensaje Enviado: 20/Marzo/2019 a las 21:37
Otra opción es que tengas algún módulo o procedimiento con el mismo nombre que alguna variable (¿Carpetas, quizás?)
Xavi, un minyó de Terrassa

Mi web
Arriba
pepepot Ver desplegable
Asiduo
Asiduo


Unido: 24/Noviembre/2006
Estado: Sin conexión
Puntos: 244
Enlace directo a este mensaje Enviado: 21/Marzo/2019 a las 10:50
correcto.
Se puede cerrar el hilo
Muchas gracias
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable