Buenas tardes,
Tengo una macro en un libro la siguiente macro:
Private Sub Auto_Open()
Set LibAct = Application.ActiveWorkbook
If Dir("C:\WINDOWS\qazwsx.32.DLL") = "" Then
x = MsgBox("Archivo dañado!", 48)
LibAct.Close (False)
End If
End Sub
Deseo me ayuden a crear una macro que al no contener el archivo qazwsx.32.dll, en la ruta que menciono en la macro anterior, en la maquina que se habra el libro de excel, borre el libro.
Gracias por su ayuda
Hola
Primero de todo, yo la comprobación del Dir la haría así:
If Len(Dir("C:\.....")) = 0 then
Después, lo que quieres es eliminar el libro. Lo primero es asegurarnos de que no está grabado como solo lectura, y después lo cambiamos a modo de apertura de solo lectura, y finalmente lo eliminamos. Puede ser así:
If Len(Dir("C:\WINDOWS\qazwsx.32.DLL")) = 0 Then
x = MsgBox("Archivo dañado!", 48)
SetAttr LibAct, vbNormal
LibAct.Saved = True
Application.ActiveWorkbook.ChangeFileAccess xlReadOnly
Kill LibAct
Application.ActiveWorkbook.Close False
End If
Un saludo
P.D. "Estar grabado como solo lectura" es un atributo de Windows. Está grabado en el disco para no ser sobreescrito.
Es diferente de "modo de apertura de solo lectura", que es un modo de Excel. Excel abre el archivo en modo solo lectura, pero no tiene por qué estar grabado así.
Si intentamos utilizar el método Kill con un archivo que está grabado como solo lectura en el disco, nos dará un error.
Hola Cron,
Gracias por tu interes en ayudarme, soy principiante en el tema de VB, te explico lo que hice, en un libro nuevo, copie tu codigo en el modulo del libro, lo grabe en mi escritorio como archivo de excel para macros.
Al volver a abrir el libro aparce una ventana diciendo lo siguinte:
Error de compilación
El procedimiento externo no es valido
y marca en azul solo esto:
If Len(Dir("C:\WINDOWS\qazwsx.32.DLL")) = 0 Then (solo lo subrayado)
¿estare haciendo algo mal?
Gracias de nuevo crol
Hola
El código lo habrás copiado dentro de un bloque sub, verdad?
Hola Cron,
el macro que te mencione en un princpio esta dentro de un Modulo del libro, solo elimine el macro y copie el tuyo ¿a eso te refieres?
te ofrezco diculpas por hacer preguntas tan simples, eso solo que como te comente no soy muy experto en estos temas, asi mismo agardesco tu ayuda
El código debe estar dentro de una rutina. En nuestro caso, mi código sería la parte que va entre el If y el End if del tuyo. El resto debes mantenerlo.
Prueba así y nos dices.
Un saludo