Jump to content

Archivo que se elimina a sí mismo


mjrofra

Recommended Posts

Posted

Hola,

pasando un segundo por acá a dejar una idea que me parece puede ser útil (aunque no soy quién para decirlo).

La macro borra el archivo que la contiene, lo que he visto se ha preguntado con alguna frecuencia en varios foros pero parece no haber una respuesta satisfactoria:

Sub Matarme_con_VBscript()


' Variable que almacena la ruta y el nombre
' del archivo .vbs que va a borrar este archivo.
Dim VBScript As String


' Tiempo, en segundos, que se va a dar de
' espera mientras se cierra el archivo.
' Es necesario dar un tiempo de espera para
' asegurarse de que el archivo ha sido cerrado.
' Si el script se ejecuta con el archivo
' abierto, no se podrá borrar el archivo.
' En este caso, el tiempo de espera es de 2 segundos.
Const TIEMPO_ESPERA_CIERRE_ARCHIVO_SEG = 2


' Si el archivo ha sido grabado por el usuario, tendrá una ruta.
' De lo contrario, la ruta se encontrará vacia y no será
' necesario borrar el archivo depués de cerrarlo pues ya
' no existirá.
If ThisWorkbook.Path <> vbNullString Then



' Almacena la ruta y el nombre que se la va a dar al script.
' En este caso se usa la carpeta temporales, para evitar
' dejar rastros evidentes:
VBScript = VBA.Environ$("Temp") & Application.PathSeparator & "MatarLibro.vbs"



' Crea el VBScript para borrar este archivo
Open VBScript For Output As #1

Print #1, "Set obj = CreateObject(""Scripting.FileSystemObject"")"
Print #1, "WScript.sleep " & TIEMPO_ESPERA_CIERRE_ARCHIVO_SEG * 1000
Print #1, "obj.DeleteFile """ & ThisWorkbook.FullName & """"

Close #1



' Ejecuta el VBScript para borrar este archivo
Shell "cmd /c " & VBScript


End If



' Cierra el libro sin guardar cambios.
ThisWorkbook.Close False



End Sub[/CODE]

Como ya lo habrán intuido algunos, he publicado una nueva entrada en el blog con más detalles sobre este procedimiento :).

EXCELPATAS: Archivo de Excel que se elimina a sí mismo

Guest Cacho R
Posted

Hola! Amigo.

¿Qué tal si evalúas el viejo truco basado en el método ChangeFileAccess? O sea:

Sub AutoEliminacion()
On Error Resume Next
With ActiveWorkbook
Application.DisplayAlerts = False
.ChangeFileAccess xlReadOnly
Kill .FullName
Application.DisplayAlerts = True
.Close
End With
End Sub[/CODE]

[size=3][font=comic sans ms] Saludos, Cacho R.[/font][/size]

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy