** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Problema con Filecopy y una unidad de red
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Problema con Filecopy y una unidad de red

 Responder Responder
Autor
Mensaje
carlosb Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 11/Octubre/2018
Localización: Lima
Estado: Sin conexión
Puntos: 5
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita carlosb Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Problema con Filecopy y una unidad de red
    Enviado: 11/Octubre/2018 a las 18:26
Buen día, soy nuevo en este foro. He tenido un problema con un código desde hace un tiempo y en el afán de averiguar la causa y solución he investigado por muchas paginas. Especialmente en este foro he encontrado respuestas a usuarios con problemas parecidos al mio y la buena disposición de los miembros a ayudar. 
Mi problema es en este codigo:
Sub EjecutaCopy1()

 Dim Reporte2 As String

Dim NewReporte2 As String

Dim RutaMaster1, RutaRep1 As String

Dim RptCopy1 As String

Dim Inicio, Fin As String

On Error GoTo Err_Handler1

Inicio = Date

RutaMaster1 = gProject.Path & "\REP\REPORTES\REP_COURIER_1HR_Real\"

RutaRep1 = "x:\"

RptCopy1 = " " & Format(Inicio, "dd") & " " & Format(Inicio, "mmmm") & " " & Format(Inicio, "yyyy") & ".xlsx"

Reporte2 = "REP_COURIER_1HR_Real" & RptCopy1

If Hour(Now) > 0 Then

    NewReporte2 = RutaRep1 & Reporte2

Else

    NewReporte2 = RutaRep1 & Mid(Reporte2, 1, Len(Reporte1) - 5) & " " & Format(Date - 1, "dd") & " " & Format(Date - 1, "mmmm") & " " & Format(Date - 1, "yyyy") & ".xlsx"

End If

FileCopy RutaMaster1 & Reporte2, NewReporte2 'copia la PLANTILLA ...\REP\MASTER\Rep_Celda_1E_15Min.xls a ...\REP\REPORTES\Rep_Energia\Rep_Celda_1E_15Min dd mmmm yyyy

Err_Handler1:

End Sub

Este código lo usamos para copiar-pegar un reporte excel (previamente creado) a una unidad de red x:\ (señalada arriba), cuando ejecuto el script no manda ningún error, pero al fijarme si ha pegado no encuentro nada en la unidad X: . He cambiado la unidad destino por la unidad C: y efectivamente ahi si pega. Solo tengo ese problema cuando intento pegar en cualquier unidad de red.ConfusedConfused

No se cual es el problema, los permisos están gestionados bien en la unidad de red. Agradecería su ayuda o dirección. Y de antemano gracias por su tiempo SmileSmileSmileSmile

karu
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: Prisión Brieva
Estado: Sin conexión
Puntos: 3174
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita lbauluz Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 12/Octubre/2018 a las 05:10
Supongo que como en RptCopy1  tienes espacios, deberías añadir comillas a la cadena, algo así como 

FileCopy  Chr$(34) & RutaMaster1 & Reporte2  Chr$(34) , NewReporte2 

No lo he probado, pero por lo que veo parecelo que falla

Un saludo.

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

Unido: 11/Octubre/2018
Localización: Lima
Estado: Sin conexión
Puntos: 5
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita carlosb Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 12/Octubre/2018 a las 19:07
Saludos Luis. Gracias por responder.Smile
 Efectivamente acabo de probar con las comillas, pero sigue sin copiar el archivo a la unidad de red.

 Cuando cambio la ruta a la unidad C:/ , ahí no presenta ningún problema. Necesito que trabaje en la unidad de red.



Editado por carlosb - 12/Octubre/2018 a las 19:08
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11594
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Octubre/2018 a las 07:59
Hola,

Algunas cosillas.
No se si falta código  no pero, en caso de producirse cualquier error en el FileCopy tu código no te diria nada  y, de ejecutarlo paso a paso, tampoco detectarías si ha fallado. 
Después de la línea FileCopy pon estas:
ExitProcedure:
  Exit Sub
ErrHandler1:
  MsgBox Err.Number & "-" & Err.Description
  Resume ExitProcedure
End Sub
De esta manera, si ejecutas paso a paso, te puede saltar el error.

Como tonteria (que no creo que tenga nada que ver)

Dim RutaMaster1, RutaRep1 As String

Dim Inicio, Fin As String


Esa forma de declarar implica que tanto RutaMaster1 como Inicio son de tipo Variant. Entiendo que RutaMaster1 es un string pero Inicio debería ser Date

Otra mejora:
Format(inicio, " dd mmmm yyyy") es mucho más sencillo para conseguir la cadena que buscas.

Otra cosita más. Realizas una validación de la hora. Cuando es igual a 0 utilizas este código:
NewReporte2 = RutaRep1 & Mid(Reporte2, 1, Len(Reporte1) - 5) & " " & Format(Date - 1, "dd") & " " & Format(Date - 1, "mmmm") & " " & Format(Date - 1, "yyyy") & ".xlsx"

¿Que es Reporte1? Porque haces un Mid desde el caracter 1 (que es lo mismo que hacer un Left) de la longitud de Reporte 1 (que no se ver) menos 5... Si no tenemos Reporte1 su longitud es 0 y si le restamos 5 se convierte en -5.. lo que nos devolvería un error 5.

No verificas si el archivo destino ya existe. Es una posibilidad de que ya tengas un fichero con ese nombre. ¿Has comprobado como se comporta FileCopy si ya existe el fichero de destino?

Como consejo:
1. Quita el control de errores y ejecuta paso a paso o cambialo como te he pusto al principio para que salte. De entrada yo probaria quitandolo así te aseguras de que salte.
2. En la ejecución paso a paso verifica continuamente el contenido de las variables. También verifica que accedes tanto al fichero origen como la ruta de destino y que no exista previamente un fichero con el mismo nombre.
3. Como alternativa al FileCopy nativo puedes utilizar el CopyFile de File System Object

Un saludo
Xavi, un minyó de Terrassa

Mi web
Arriba
carlosb Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 11/Octubre/2018
Localización: Lima
Estado: Sin conexión
Puntos: 5
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita carlosb Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Octubre/2018 a las 18:46
Gracias Xavi, hare lo que me indicas.
Pero bueno, no se si aporta algo, pero el codigo funciona a la perfeccion cuando cambio el destino al disco C:/.
Solo tengo ese problema cuando el destino es X:/ o cualquier unidad de red. :C.
Pondre la parte de codigo que me recomiendas Xavi, gracias. Te avisare como me fue.

Editado por carlosb - 14/Octubre/2018 a las 18:47
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 11594
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 14/Octubre/2018 a las 20:31
Si funciona perfectamente con C:\loquesea y no funciona con X:\loquesea, tiene la pinta de problema de permisos. Ya se que dices que lo has comprobado pero nunca se sabe...

Otra opción sería que se ejecutara desde una máquina dónde la unidad X no estuviera mapeada. Entiendo que es una posibilidad remota pero también está ahí.

Como consejo adicional utiliza rutas lógicas de forma que cualquiera pueda ejecutar el código. De esa forma no es necesario que todos los posibles usuarios tengan los mismos mapeos de unidades.

Un saludo

Xavi, un minyó de Terrassa

Mi web
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable