2010-07-07 4 views
7

Desarrollé una aplicación de Access usando VBA. El acceso cada vez que abro, me sale el siguiente:Cómo deshacerse de la advertencia de seguridad de VBA

https://lh5.googleusercontent.com/wgn5B5PllVXGuG6W4_xiFa1rouSpDSn27MC0nzPkgJ5CPN8BKpAn-gDFsVS4GZtepY-c4jtbEupKeV227ogICQlzcg=s512

tengo que hacer clic Opciones ->habilitar el contenido ejecutar mis macros. Esta aplicación se compartirá entre un par de personas en el trabajo que no son tan conocedores de la tecnología. Entonces, según los requisitos, debo eliminarlo. Intenté firmar/empaquetar la base de datos, pero todavía no se deshace de la advertencia.

+0

Desde el aspecto de su captura de pantalla es Access 2007 y no 2003, o 2010. – jdw

Respuesta

11

Para hacerlo, debe agregar la ubicación desde donde se inicia el Excel en las "Ubicaciones de confianza".

Para hacer esto, haga lo siguiente:

  • En Opciones de Excel, vaya al Centro de confianza y, a continuación Ubicaciones de confianza
  • añadir la ubicación.

Esto tendría que hacerse por equipo.

Además, no hay forma de hacerlo desde el punto de vista del archivo Excel, ya que esto anularía por completo la característica de seguridad de dejar que el usuario elija ejecutar el código VBA o no.

También una pequeña nota al margen, si firma su archivo de Excel, aún necesita que el destinatario confíe en usted como editor, por eso es probable que su solución no funcione.

Editar:

Tomando en los comentarios, no parece haber una manera de hacerlo mediante programación. Como tomado de XpertsExchange,

¿Por qué no simplemente establecer la entrada de registro desde el código, sin invocar a Shell? Utilice la clase CRegistry encontrar aquí:

http://www.vbaccelerator.com/home/VB/Code/Libraries/Registry_and_Ini_Files/Complete_Registry_Control/article.asp

código VBA:

Dim c As New cRegistry 
    With c 
     .ClassKey = HKEY_CURRENT_USER 
     .SectionKey = "Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\YourTrustedLocationName" 
     .ValueKey = "Path" 
     .ValueType = REG_DWORD 
     .Value = "Full path to Trusted Folder" 
    End With 

La única salvedad es que YourTrustedLocationname debe ser único ...

que tendría que tratar si debe ser .ValueType = REG_DWORD o REG_SZ. No estoy seguro de eso.

+0

gracias. ¿Hay alguna forma de "incrustarlo"? No tengo el lujo de agregar una ubicación confiable. – masfenix

+1

Sí, compañero. De lo contrario, anularía el objetivo de la función de seguridad en su conjunto. Imagíneme haciendo esto, empaquetando un virus VBA y enviándole el archivo. Si el archivo ejecutaría automáticamente las macros sin preguntarme primero, no tendría sentido tener esta característica de seguridad adicional. – Trefex

+0

Veo tu punto, muchas gracias. – masfenix

2

Haga que su macro sea firmada por una autoridad de confianza.

+0

Access 2007 no permite la firma de código en los archivos de bases de datos de los tipos .accdb, .accdr y .accde. MS se llevó la característica (y la volvió a traer en la versión 2010). La versión 2007 permitirá la firma de código en bases de datos de tipo .mdb; de lo contrario, solo permitirá la firma de un paquete de instalación (lo cual no es bueno si el usuario final usa el tiempo de ejecución de Access y no tiene fácil acceso para agregar una ubicación confiable). – jdw

3

Es una opción por usuario. Todos necesitarían 'confiar' en su libro de trabajo.

En Excel, presione el botón de menú y elija Opciones de Excel. En esa ventana, elija Trust Center y luego Trust Center Settings. En esa ventana, elija Ubicaciones de confianza.

Una vez en esa pantalla, es probable que desee marcar "Permitir ubicaciones de confianza en mi red" y luego haga clic en Agregar ubicación y agregue la ubicación de red de su libro de trabajo.

0

Lo que hice fue crear un proyecto de instalación con visual studio 2010 (bajo configuración & proyectos de implementación).Dentro de este proyecto configura para instalar/copiar la aplicación MS Access a "C: \ Ntapps \ MsOffice \ Office12 \ ACCWIZ \". Esta es una carpeta para bases de datos confiables. A continuación, cree un acceso directo a la aplicación MS Access e instálela en la ubicación deseada.

Cuando todo está bien y la instalación está completa, MS Access (en la configuración predeterminada) ahora confía en la base de datos.

buena suerte;)

grtz, Tom

+0

La ubicación predeterminada de instalación normal para la carpeta que menciona (para Access 2007) es "% ProgramFiles (x86)% \ Microsoft Office \ Office12 \ ACCWIZ". Su ruta no es una ruta predeterminada estándar y muy probablemente única para su instalación. Tenga en cuenta que esta carpeta NO tiene acceso de escritura para un usuario sin derechos administrativos, en caso de que alguien se pregunte si esto representa un agujero de seguridad. – jdw

5

Aunque esta pregunta es años de edad, en caso de que puede ayudar, aquí es lo que hice. Es un enfoque diferente de los que ya se han propuesto, y puede servir a otra persona. En mi caso, MsAccess no fue abierto directamente por el usuario. En su lugar, MsAccess se comenzó a utilizar la automatización desde otra aplicación personalizada. Entonces, en lugar de hacer que el usuario haga clic en 'Habilitar contenido', le pedimos a esta aplicación que le indique a MsAccess que habilite las macros. Algo similar a esto:

cli = create_object("Access.Application") 
cli.AutomationSecurity = 1    # 1 = msoAutomationSecurityLow 
cli.visible = true 
cli.opencurrentdatabase("c:/Users/jmperez/AppData/Local/Temp/DB_TMP.mdb") 

(lo de que el código anterior, no es de un lenguaje de programación 'estándar' o 'popular', pero no debería ser difícil de adaptar a Visual Basic o cualquier otra cosa)

+0

Este código es exactamente lo que yo quería. He estado buscando una manera de abrir un archivo de base de datos de acceso oculto utilizando el objeto de la aplicación durante mucho tiempo. Establecer la propiedad 'AutomationSecurity' en 1 fue la clave para suprimir el cuadro de diálogo de advertencia de ubicación de confianza. –

Cuestiones relacionadas