Macro para saber si está abierto como "solo lectura"

01/02/2010 - 11:48 por Jon | Informe spam
Hola a todos,
me gustaría saber, cómo puedo hacer mediante una macro, para saber si el
archivo que tengo abierto está con la característica de "solo lectura". Me
sería de gran utilidad para proteger ciertas acciones que no quiero que se
ejecuten.
Muchas gracias de antemano.
Saludos,
Jon.

Preguntas similare

Leer las respuestas

#1 Ignacio
01/02/2010 - 17:44 | Informe spam
¡Hola, Jon!

La función GetAttr te permite obtener los atributos de un fichero.
Para saber si el archivo es de sólo lectura, o está protegido contra
escritura, debes preguntarle:
If (GetAttr(ActiveWorkbook.FullName) And vbReadOnly) = vbReadOnly Then
...sentencias a ejecutar si el archivo es de sólo lectura...
End If

¡Ojo con los paréntesis! No sobra ninguno aunque parezca que sí.
Por otra parte, el libro debe estar salvado. ActiveWorkbook.FullName
no funcionará si el archivo es nuevo y aún no ha sido grabado en una
unidad.

Espero que te sirva de algo.

Un saludo,
Ignacio.
Respuesta Responder a este mensaje
#2 Jon
01/02/2010 - 18:56 | Informe spam
Gracias Ignacio,

me ha resultado interesante lo que comentas. Por lo que he localziado en
Internet, tambiñen lo puedo hacer meciante "ActiveWorkbook.ReadOnly". De esta
forma se si está abierto como solo lectura o no.

Por otro lado, me gustaría saber si hay alguna forma en la que pueda tener
"quien" lo tiene abierto. Lo que quiero hacer es algo similar al mensaje que
saca Excel en pantalla cuando lo abres, por lo que necesito saber quien lo
tiene abierto. He encontrado la opción de "ActiveWorkbook.UserStatus", pero
solo funciona con libros compartidos. ¿Existe o conoces otra forma de hacerlo
si no está compartido? Ya te digo que es lo mismo que el mensaje que saca
Excel al abrrilo.

Muchas gracias de nuevo!

Saludos,

Jon

"Ignacio" wrote:

¡Hola, Jon!

La función GetAttr te permite obtener los atributos de un fichero.
Para saber si el archivo es de sólo lectura, o está protegido contra
escritura, debes preguntarle:
If (GetAttr(ActiveWorkbook.FullName) And vbReadOnly) = vbReadOnly Then
sentencias a ejecutar si el archivo es de sólo lectura...
End If

¡Ojo con los paréntesis! No sobra ninguno aunque parezca que sí.
Por otra parte, el libro debe estar salvado. ActiveWorkbook.FullName
no funcionará si el archivo es nuevo y aún no ha sido grabado en una
unidad.

Espero que te sirva de algo.

Un saludo,
Ignacio.
.

Respuesta Responder a este mensaje
#3 Héctor Miguel
01/02/2010 - 20:55 | Informe spam
hola, chicos !

cabria la posibilidad de que ese archivo NO tenga la propiedad (ReadOnly) "por sistema operativo" (?)
sino que se abra en la sesion cono "de solo lectura" (p.e. si se sugiere esta opcion al guardarlo ?)
por lo cual, la funcion GetAttr(... devolveria "Falso" (lo cual seria falso tambien, se entende ?)

si esta es la situacion que necesita monitrear OP, otra alternativa seria una instruccion mas sencilla +/- asi:

if activerogkbook.readonly then
' aqui las acciones si se abrio como "readonly" ... '
end if

saludos,
hector.

Ignacio escribio en el mensaje ...

La funcion GetAttr te permite obtener los atributos de un fichero.
Para saber si el archivo es de sólo lectura, o esta protegido contra escritura, debes preguntarle:
If (GetAttr(ActiveWorkbook.FullName) And vbReadOnly) = vbReadOnly Then
...sentencias a ejecutar si el archivo es de sólo lectura...
End If

Ojo con los parentesis! No sobra ninguno aunque parezca que si.
Por otra parte, el libro debe estar salvado.
ActiveWorkbook.FullName no funcionara si el archivo es nuevo y aun no ha sido grabado en una unidad...
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida