Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Error 13 No coinciden los tipos

Estas en el tema de Error 13 No coinciden los tipos en el foro de Visual Basic clásico en Foros del Web. hola amigos, tengo esta rutina para crear carpetas pero me marca error. Set fs = CreateObject("Scripting.FileSystemObject") If Dir("C:\windows\pollo feliz\pv traslados\pedidos\", vbDirectory) = "" Then Set ...
  #1 (permalink)  
Antiguo 14/07/2008, 09:17
 
Fecha de Ingreso: agosto-2006
Mensajes: 110
Antigüedad: 17 años, 9 meses
Puntos: 0
Error 13 No coinciden los tipos

hola amigos, tengo esta rutina para crear carpetas pero me marca error.

Set fs = CreateObject("Scripting.FileSystemObject")
If Dir("C:\windows\pollo feliz\pv traslados\pedidos\", vbDirectory) = "" Then


Set f = fs.CreateFolder("C:\windows\pollo feliz\pv traslados\pedidos\") '* aqui me marca e l error
Else
End If



lo raro es que lo tengo en otro programa y en el otro no me marca error y en este si, x q sera.



gracias
  #2 (permalink)  
Antiguo 14/07/2008, 09:28
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Error 13 No coinciden los tipos

Hola,yo lo pruebo y no tira error...

saludos.
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #3 (permalink)  
Antiguo 14/07/2008, 09:35
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: Error 13 No coinciden los tipos

Yo tampoco le veo el error.

P.S.: Puedes probar usando MkDir en vez de FileSystemObject.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 14/07/2008, 09:48
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: Error 13 No coinciden los tipos

quitale el "\" y prueba de nuevo U_U
  #5 (permalink)  
Antiguo 14/07/2008, 11:25
Avatar de seba123neo  
Fecha de Ingreso: febrero-2007
Ubicación: Esperanza, Santa Fe
Mensajes: 1.046
Antigüedad: 17 años, 2 meses
Puntos: 19
Respuesta: Error 13 No coinciden los tipos

no influye la barra al final ....
__________________
" Todos Somos Ignorantes; lo que pasa es que no todos ignoramos las mismas cosas " - Albert Einstein
  #6 (permalink)  
Antiguo 14/07/2008, 15:43
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Error 13 No coinciden los tipos

Hola!

¿Existe la ruta "C:\windows\pollo feliz\pv traslados\"? Si ese directorio no existe, no te dejará crear ninguno debajo, porque las funciones de creación de directorios no son recursivas.

Puedes atajarlo con algo así (debería funcionar, la he escrito aquí directamente u^^):

Código:
Public Sub CreaRuta(ByVal NPath as String)
Dim Direc() As String
Dim i As Long
Dim TempPath As String
Dim fs As Object
Dim f as Object

    Set fs = CreateObject("Scripting.FileSystemObject")

    Direc = Split(NPath, "\")

    TempPath = Direc(0) & "\"
    For i = 1 to Ubound(Direc)
        TempPath = TempPath & Direc(i) & "\"
        If Dir(TempPath, vbDirectory) = "" Then
            Set f = fs.CreateFolder(TempPath)
        End If
    Next i

    Erase Direc
End Sub
Esta función lo que hace es descomponer primero en un array todos los directorios por separado, y luego va concatenando las rutas para asegurarse de que todas las carpetas existen antes de crear una nueva.

En el caso que necesitas, primero intenta crear "C:\windows\"; como ya existe, intenta crear "C:\windows\pollo feliz\"; si ya existe no hace nada, pero si no, la crea, luego lo intenta con "C:\windows\pollo feliz\pv traslados\" y así ad infinitum... o hasta que se le acabe la ruta que le has dicho

Última edición por Txoco; 16/07/2008 a las 00:23 Razón: Corregir la función
  #7 (permalink)  
Antiguo 14/07/2008, 18:59
Avatar de ba-ka  
Fecha de Ingreso: julio-2008
Mensajes: 27
Antigüedad: 15 años, 9 meses
Puntos: 1
Respuesta: Error 13 No coinciden los tipos

quitale el "\" y prueba de nuevo porq el programa no funciona va querer crear carpetas.
  #8 (permalink)  
Antiguo 15/07/2008, 11:34
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Respuesta: Error 13 No coinciden los tipos

no es un problema que cree o no la carpeta, el problema es que la variable f no es comptible con lo que quieres asignarle, quizas ienes algun option explicit en alguna parte de tu codigo, lo que obliga a declarar todas las variables antes de utilizarlas, sino, antes de utilizar f declarala como folder (dim f as folder), pruebas y nos avisas
  #9 (permalink)  
Antiguo 16/07/2008, 00:48
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 11 meses
Puntos: 7
Respuesta: Error 13 No coinciden los tipos

Si no ha puesto la directiva Option Explicit, VB crea automáticamente todas las variables que necesita y que no se declaran explícitamente, con el tipo Variant. Yo la he declarado As Object porque yo sí trabajo con Option Explicit activado y por hábito, no voy a poner otra excusa porque no la tengo . Por utilizar una expresión de programación orientada a objetos (aunque no sea lo más apropiado) digamos que Folder es una clase heredadada de Object.

He corregido la función porque había dos puntos en los que tenía que acceder a la matriz y apuntaba a otras variables, pero ahora ya funciona, la he testeado. En cualquier caso, si no se va a hacer nada con las propiedades de la carpeta recién creada, se puede (se debe) omitir esa variable y llamar a CreateFolder con Call.

E insisto, CreateFolder sólo puede crear una carpeta por llamada, por lo que si se le pide que cree más, dará el error. Para que pueda crear "C:\windows\pollo feliz\pv traslados\pedidos\", primero tiene que existir "C:\windows\pollo feliz\pv traslados\". La barra final no es significativa, e incluso según las circunstancias, recomendable para distinguir implícitamente directorios de ficheros. En este caso da igual porque la función sólo trabaja con carpetas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:01.