VBA: Permitir modificaciones al abrir

Resuelto
BretonBeurre Mensajes publicados 12 Estado Miembro -  
fabien25000 Mensajes publicados 697 Estado Miembro -
Hola a todos,

Quisiera abrir un archivo protegido por contraseña a través de un macro en VBA. Además, había activado la ventana que solicita confirmación al usuario si desea realizar modificaciones en el archivo:

"El autor desea que abra "FileName" en solo lectura, a menos que necesite realizar modificaciones. ¿Desea abrirlo en solo lectura?"

Así que he escrito el siguiente código para abrir el archivo con la contraseña, pero me quedo atrapado en el mensaje de solo lectura. ¿Cómo puedo indicar en mi código que no, no deseo abrir el archivo en solo lectura, para poder realizar modificaciones (copiar/pegar datos)?

Código:
Sub abrirArchivo()
Workbooks.Open Filename:="MiArchivo", WriteResPassword:="Contraseña"
End Sub

He probado con "Application.DisplayAlerts = False" pero no ha funcionado, el archivo se abre correctamente, pero en solo lectura. ¿Algunas otras ideas?

Gracias a todos.

Configuración: Windows / Edge 17.17134

2 respuestas

BretonBeurre Mensajes publicados 12 Estado Miembro 1
 
Gracias a fabien25000 por haber encontrado la solución, aquí está el código a utilizar al abrir el archivo:
Set wkb = Workbooks.Open(Filename:=sFileName, UpdateLinks:=False, ReadOnly:=True, WriteResPassword:="Password", IgnoreReadOnlyRecommended:=True)

¡Gracias de nuevo a él!
1
fabien25000 Mensajes publicados 697 Estado Miembro 59
 
Hola,
no tengo tiempo para probar, pero tal vez partiendo de un msgbox que pregunte si se necesita modificación o no, si sí readonly:=true, si no false

--
Cuando solo se dispone de un martillo, todos los problemas parecen un clavo.
0
BretonBeurre Mensajes publicados 12 Estado Miembro 1
 
Lo que pasa es que siempre hay que poder abrir el archivo manualmente, con la opción de abrirlo en Solo lectura o no.
Así que intenté hacer un cuadro de mensaje al abrirlo, pero no se pueden modificar los atributos de un archivo abierto. Así que tuve que escribir un código que, en función de la respuesta del usuario, cierra el archivo y luego lo vuelve a abrir cambiando su atributo. Excepto que al momento de reabrirlo, me vuelve a preguntar si quiero en Solo lectura o no… Incluso con "Application.DisplayAlerts = False"... Una pena ;)
0
BretonBeurre Mensajes publicados 12 Estado Miembro 1
 
A menos que me haya equivocado en mi código, tal vez haya otra manera de hacerlo funcionar diferente a lo que he hecho, pero a primera vista no funciona...
0
fabien25000 Mensajes publicados 697 Estado Miembro 59
 
Sí, no está mal...
y si codificas en
Workbook_BeforeSave
con un if y en la condición tu
environ("username")
y si no eres tú
thisworkbook.close (false)
entonces ya no necesitas la lectura sola?
0
BretonBeurre Mensajes publicados 12 Estado Miembro 1
 
Por el código VBA, tengo que poder modificar y guardar "MonFichier.xlsx". Pero manualmente, debo decir al abrir si quiero estar en solo lectura o no. Así que no entendí exactamente lo que querías hacer, pero al final en mi código debería terminar diciéndole que guarde las modificaciones. ¡Gracias igual por las ideas! ;)
0
fabien25000 Mensajes publicados 697 Estado Miembro 59
 
He encontrado este código:
Set wkb = Workbooks.Open(Filename:=sFileName, UpdateLinks:=False, ReadOnly:=True, IgnoreReadOnlyRecommended:=True)

a ver si te puede ayudar investigando en esta dirección...
0