Copyfile+kill !! important !!

Edgar - 5 déc. 2001 à 10:50
 edgar - 5 déc. 2001 à 11:29
Bonjour et merci de m’accorder ton aide.
Voilà, je souhaite copier un fichier pdf d’un répertoire à un autre en utilisant fso (comme ça je peux écraser le pdf s’il existe déjà dans le répertoire de destination). Ensuite je tue le fichier pdf qui était dans le repertoire source. Voici alors le pb qui apparaît : On dirait que le copyfile est asynchrone. En effet lorsque je veux tuer le pdf après l’avoir copier, j’ai une erreur 70 sur le kill(permission refusée) c’est comme si le pdf était réquisitionné. Si j’ajoute entre les deux instructions un timer ou une messagebox tout se passe bien, je crois que c’est parce que le fichier a eu le temps d’être copié.
Je souhaite en somme trouver une méthode qui me permette d’executer l’instruction kill uniquement quand le copyfile est terminé. As-tu une idée de ce qu’il se passe ? et d’une solution ? Merci.
j'ai essayé DoEvents mais c'est pas bon.

Dim r, fso
Set fso = CreateObject("Scripting.FileSystemObject")
In_PDFFile = Default_Folder & "" & FileName & ".pdf"
Out_PDFFile = OutPath & "" & FileName & ".pdf"

r = fso.CopyFile(In_PDFFile, Out_PDFFile, True)

Dim PauseTime, Start, Finish, TotalTime

PauseTime = 5 ' Définit la durée.
Start = Timer ' Définit l'heure de début.
Do While Timer < Start + PauseTime
DoEvents ' Donne le contrôle à d'autres
' processus.
Loop
Finish = Timer ' Définit l'heure de fin.
TotalTime = Finish - Start ' Calcule la durée
' totale.

On Error GoTo killing
In_PDFFile = Default_Folder & "" & FileName & ".pdf"
If Dir(In_PDFFile) <> "" Then
Kill In_PDFFile
End If

4 réponses

Pourquoi ne pas tester la valeur de retour de r.
r = fso.CopyFile(In_PDFFile, Out_PDFFile, True)
if r = ?? then
kill ...
end if
0
Essaie d'utiliser l'API copyFile
Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

Jos
0
oui mais je ne crois pas que je puisse ecraser le fichier que je veux copier s'il existe déjà dans le repertoire de destination...
0
c'est une idée mais qd je debugge pas à pas r est toujours vide pourtant la copie marche quand même
0
Rejoignez-nous