dissabte, 5 de febrer de 2011

Esborrar fitxers amb Vb. Moure fitxers amb Vb

En Vb tenim una funció molt útil per eliminar fitxers que es la funció Kill. Aquesta funció però, te un petit problema. Ho elimina del tot. No queda ni tan sols a la paperera de reciclatge.

Per evitar riscs, el que podem fer és moure els fitxers a una carpeta provisional o fins i tot a la paperera de reciclatge (això ho veurem en un altre post). La raó es que en el projecte en que estic treballant, hi ha bastants fitxers auxiliars de tipus bat o exe i no vull eliminar-los accidentalment.

La idea es borrar tots els fitxers xlsx dins de la carpeta C:\Madrid. En lloc d'eliminar-los definitivament els deixarem dins la carpeta c:\Madrid\Paperera

No faig servir el Filecopy perquè tot i que tothom indica que és molt fàcil, al final no funciona mai (o de moment no ho se fer servir)

El codi:
###############################################################
Private Sub cmdKiller_Click()
'Aquestes dues declaracions son per el msgbox
'la primera declaració es la pregunta que apareixerà
'la segona declaració recull el event del msgbox
Dim ComentariKiller, RespostaKiller As String

'La tercera i cuarta declaració serveixen per determinar la ubicació
'del directori d'origen i el de destí
Dim FicherosOrigen, FicherosDestino As String

'Finalment declarem un objecte per fer servir el FSO
Dim fs As Object

'Determinem els directoris amb els que volem treballar
'Es important afegir la contrabarra al final per facilitar el codi
FicherosOrigen = "C:\madrid\"
FicherosDestino = "C:\madrid\Paperera\"

'Escribim el comentari que presentarà el msgbox
ComentariKiller = "Vols esborrar TOTS els XLSX?"

'Preparem la resposta que rebrem al escollir una opció del msgbox
'El vbOkCancel presentarà dos botons ok i cancel
'El vbDefaultButton2 fa que el botó per defecte sigui el de cancel
'El "Chungo de la muerte" es el que apareixerà com a títol del msgbox
RespostaKiller = MsgBox(ComentariKiller, vbExclamation + vbOKCancel + vbDefaultButton2, "Chungo de la muerte")

'Ara fem un select case. Les respostes dels botons son vbok o vbcancel
Select Case RespostaKiller
Case vbOK
Set fs = CreateObject("Scripting.FileSystemObject")
fs.CopyFile FicherosOrigen & "*.xlsx", FicherosDestino
Set fs = Nothing
'els borrem definitivament
Kill "c:\madrid\*.xlsx"
Case vbCancel
MsgBox "no borro res"
End Select

End Sub
###############################################################


La idea de fer servir el FSO l'he tret de:
http://forums.devarticles.com/microsoft-access-development-49/copy-file-using-vba-30811.html

Cap comentari:

Publica un comentari a l'entrada