Autodestruir un libro

08/03/2007 - 20:06 por Ivan | Informe spam
hola a todos,

estoy intentando que un libro ya creado, se autodestruya tras haber
realizado su 'cometido'. A lo mejor es muy sencillo, o a lo mejor no
se puede, pero la cosa es que no consigo verlo. Tras buscar algo
parecido al Delete de las hojas, etc,.., al final mis ultimos intentos
van por la via de crear un 2º libro, insertarle codigo, e intentar que
sea este el que realice el cometido una vez cerrado el primero. Pero,
o algo estoy haciendo mal o es que, al menos con este planteamiento no
se puede.

el codigo que pongo a continuacion es una de las ultimas combinaciones
que he probado, pero, a pesar de cerrar el primer libro y 'no guardar'
el 2º, el 1º no me lo elimina de su directorio (tambien me interesa
que no lo mande a la papelera de reciclaje, sino que lo elimine del
todo)3

bueno, no se si me he explicado, pero ahi va el codigo:

Sub Autodestruir()
Dim EsteLibro As String
With ThisWorkbook
EsteLibro = .Path & "\" & .Name
.Save: .Close
End With
Workbooks.Add
With
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.InsertLines 2, "Private Sub Workbook_BeforeClose(Cancel As
Boolean)"
.InsertLines 3, " Kill " & """" & EsteLibro & """"
.InsertLines 4, " ThisWorkbook.Saved = True"
.InsertLines 5, "End Sub"
.InsertLines 6, "Private Sub Workbook_Activate()"
.InsertLines 7, " ThisWorkbook.Close"
.InsertLines 8, "End Sub"
End With
End Sub

he probado muchas combinaciones, pej. cerrar el libro tambien desde el
2º libro:->

.InsertLines 6, " Workbooks(" & """" & EsteLibro & """" & ").Close"

pero tampoco he conseguido eliminarlo. ¿quizas es que al llamar a otro
libro desde uno, este ultimo no se cierra realmente hasta que todo el
codigo llamante se ha ejecutado?

se me esta ocurriendo que quizas insertando un OnTime en el 2º libro,
para dar tiempo a que realmente se cierre el 1º. Voy a probarlo, pero
no lo veo nada claro.

en cualquier caso, si a alguien se le ocurre algo se lo agradezco

un saludo y hasta pronto
Ivan
 

Leer las respuestas

#1 zz
09/03/2007 - 01:20 | Informe spam
y creando un VBS con la instruccion kill(filename), en el evento beforeclose
del libro?


Zz[underground]

"Ivan" wrote in message
news:
hola a todos,

estoy intentando que un libro ya creado, se autodestruya tras haber
realizado su 'cometido'. A lo mejor es muy sencillo, o a lo mejor no
se puede, pero la cosa es que no consigo verlo. Tras buscar algo
parecido al Delete de las hojas, etc,.., al final mis ultimos intentos
van por la via de crear un 2º libro, insertarle codigo, e intentar que
sea este el que realice el cometido una vez cerrado el primero. Pero,
o algo estoy haciendo mal o es que, al menos con este planteamiento no
se puede.

el codigo que pongo a continuacion es una de las ultimas combinaciones
que he probado, pero, a pesar de cerrar el primer libro y 'no guardar'
el 2º, el 1º no me lo elimina de su directorio (tambien me interesa
que no lo mande a la papelera de reciclaje, sino que lo elimine del
todo)3

bueno, no se si me he explicado, pero ahi va el codigo:

Sub Autodestruir()
Dim EsteLibro As String
With ThisWorkbook
EsteLibro = .Path & "\" & .Name
.Save: .Close
End With
Workbooks.Add
With
ActiveWorkbook.VBProject.VBComponents("ThisWorkbook").CodeModule
.InsertLines 2, "Private Sub Workbook_BeforeClose(Cancel As
Boolean)"
.InsertLines 3, " Kill " & """" & EsteLibro & """"
.InsertLines 4, " ThisWorkbook.Saved = True"
.InsertLines 5, "End Sub"
.InsertLines 6, "Private Sub Workbook_Activate()"
.InsertLines 7, " ThisWorkbook.Close"
.InsertLines 8, "End Sub"
End With
End Sub

he probado muchas combinaciones, pej. cerrar el libro tambien desde el
2º libro:->

.InsertLines 6, " Workbooks(" & """" & EsteLibro & """" & ").Close"

pero tampoco he conseguido eliminarlo. ¿quizas es que al llamar a otro
libro desde uno, este ultimo no se cierra realmente hasta que todo el
codigo llamante se ha ejecutado?

se me esta ocurriendo que quizas insertando un OnTime en el 2º libro,
para dar tiempo a que realmente se cierre el 1º. Voy a probarlo, pero
no lo veo nada claro.

en cualquier caso, si a alguien se le ocurre algo se lo agradezco

un saludo y hasta pronto
Ivan

Preguntas similares