Macro para eliminar Libro si no hay condicionante

6 envíos / 0 nuevos
Último envío
age1472
Imagen de age1472
Offline
última acción: Hace 4 años 8 meses
alta: 11/03/2019 - 18:45
Puntos: 70
Macro para eliminar Libro si no hay condicionante

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

Etiquetas: 

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 2 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
HolaPrimero de todo, yo  la

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.

age1472
Imagen de age1472
Offline
última acción: Hace 4 años 8 meses
alta: 11/03/2019 - 18:45
Puntos: 70
Hola Cron,  Gracias por tu

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

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 2 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
HolaEl código lo habrás

Hola

El código lo habrás copiado dentro de un bloque sub, verdad?

age1472
Imagen de age1472
Offline
última acción: Hace 4 años 8 meses
alta: 11/03/2019 - 18:45
Puntos: 70
Hola Cron,  el macro que te

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

Cron
Imagen de Cron
Offline
última acción: Hace 8 meses 2 días
Nivel 1 - 200 puntosNivel 2 - 500 puntosNivel 3 - 1000 puntosNivel 4 - 2000 puntosNivel 5 - 4000 puntos
alta: 23/06/2010 - 12:30
Puntos: 12735
El código debe estar dentro

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