Visual Basic - Ayuda: No puedo copiar archivos.

Life is soft - evento anual de software empresarial
 
Vista:

Ayuda: No puedo copiar archivos.

Publicado por [no_name] (38 intervenciones) el 20/10/2003 18:23:10
Tengo en un formulario el siguiente código:

Private Sub Form_Load()

Set fs = CreateObject("Scripting.FileSystemObject")

If Not fs.FolderExists("C:\Archivos de Programa\Encargos") Then

MkDir ("C:\Archivos de Programa\Encargos")

End If

FileCopy "Programa\*.*", "C:\Archivos de Programa\Encargos"

End Sub

La idea es que al cargar el fornulario, compruebe la existencia de una carpeta (y si no existe la cree), y luego me copie los archivos de la subcarpeta "Programa"del path actual a la carpeta que acabo de comprobar.

Me da el siguiente error: "Nombre o número de archivos incorecto"

¿Cambio de función de copia? ¿está mal escrito el path de los archivos?
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

RE:Ayuda: No puedo copiar archivos.

Publicado por Pedro Luis (878 intervenciones) el 20/10/2003 18:39:08
Creo que falta el Camino de la carpeta programa,
añade app.path a programa o sea
FileCopy app.path+"\programa\*.*" , " ......"
Tambien es posible que no entienda el *.* , con lo que tendras que usar la funcion Dir para copiar archivo por archivo
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

RE:Ayuda: No puedo copiar archivos.

Publicado por martin (1 intervención) el 20/10/2003 20:03:46
Al parecer la funcion filecopy solo copia archivo por archivo y no de muchos juntos.

por eso en la carpeta destino debes incluir el nombre del archivo, ejemplo
origen= "c:\carpeta\wens.txt"
destino=c:\archivos de programa\wens.txt"

filecopy origen , destino
o sea, el nombre del archivo debe ir tanto en el origen (obviamente) como en el destino.

El "*.*" sí lo puedes usar en una función como kill "c:\*.*"
Por cierto, puedes ayudarme con esta pregunta?
uso filecopy para copiar un archivo pero a veces ese archivo es demasiado grande o està dañado y la funcion de filecopy se queda intentando copiarlo, y en ese intento se bloquea mi programa (no responde), sí uso captura de errores y doevents.
Mi pregunta es:
¿Hay algùn modo de que cuando se inicie la funcion de file copy se detecte el tiempo, y que digamos a los 30 segundos que no se pudo copiar se corte el proceso del filecopy?
Digamos que si a los 30 segundos ya no lo copió, entonces ya no quiero que lo copie y que termine la rutina (exit sub), o que pase al siguiente proceso.
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

RE:Ayuda: No puedo copiar archivos.

Publicado por [no_name] (38 intervenciones) el 20/10/2003 23:47:45
Gracias por contestar. Aqui te incluyo el código de una función que trabaja exactamente = que filecopy. No recuerdo de donde la copié (vamos ke no es mio, :P). Quizá así no se te bloquee. Lo de controlar el tiempo de copia, no creo que puedas por que si se queda pillado, también se quedara pillado cualquier contador de tiempo que incluyas.
text1 es el directorio fuente y text2 el de destino:
Private Sub Command1_Click()
Dim SourceDir As String
Dim TargetDir As String
Dim X As Integer
Dim P As Integer

SourceDir = text1.Text
TargetDir = text2.Text
CopyFile SourceDir, TargetDir, P
MsgBox "Numeros de ficheros copiados = " & Str$(P)
End Sub

Sub CopyFile(SrcDir As String, TrgtDir As String, NumFiles As Integer)
Dim OldDir As String
Dim NewDir As String
Dim FileName As String
Dim sType As String

OldDir = SrcDir
If Right$(OldDir, 1) <> "\" Then
OldDir = OldDir & "\"
End If

NewDir = TrgtDir
If Right$(NewDir, 1) <> "\" Then
NewDir = NewDir & "\"
End If

NumFiles = 0

FileName = Dir$(OldDir & "*.*")
While FileName <> ""
On Error Resume Next
FileCopy (OldDir & FileName), (NewDir & FileName)
If Err = 0 Then
NumFiles = NumFiles + 1
Else
Beep
MsgBox Error$, MB_ICONEXCLAMATION, ("Error copiando fichero "
& FileName)
End If
On Error GoTo 0

FileName = Dir$

DoEvents
Wend
End Sub
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