2010-07-07 14 views
7

Ho sviluppato un'applicazione di accesso tramite VBA. Ogni volta che Open Access, ho il seguente:Come eliminare l'avviso di protezione VBA

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

devo cliccare Opzioni ->abilitare il contenuto per eseguire le mie macro. Questa applicazione sarà condivisa tra un paio di persone al lavoro che non sono così esperti di tecnologia. Quindi, come da requisiti, devo rimuoverlo. Ho provato a firmare/impacchettare il database, ma non mi sbarazza ancora dell'avvertimento.

+0

Dall'aspetto del tuo screenshot è Access 2007 e non 2003 o 2010. – jdw

risposta

11

Per fare ciò è necessario aggiungere la posizione da cui viene avviato Excel in "Percorsi attendibili".

A tale scopo, procedere come segue:

  • In Opzioni di Excel, andare al Centro protezione e quindi Percorsi attendibili
  • aggiungere la posizione.

Questo dovrebbe essere fatto su base pc.

Inoltre, non esiste un modo per eseguire questa operazione da un punto di vista del file Excel in quanto ciò eliminerebbe completamente la funzione di sicurezza che consente all'utente di scegliere se eseguire il codice VBA o meno.

Anche un piccolo sidenote, se firmi il tuo file Excel, avresti comunque bisogno che il destinatario si fidi di te come editore, ecco perché probabilmente la tua soluzione non ha funzionato.

Edit:

Tenendo commenti, ci sembra essere un modo per farlo a livello di codice. Come preso da XpertsExchange,

Perché non impostare semplicemente la voce di registro dal codice, senza richiamare Shell? Utilizzare la classe cRegistry trovato qui:

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

codice 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 

L'unica avvertenza è che YourTrustedLocationname deve essere unico ...

dovreste provare se dovrebbe essere .ValueType = REG_DWORD o REG_SZ. Non sono sicuro su quello.

+0

grazie. C'è un modo per "incorporarlo" in. Non ho il lusso di aggiungere una posizione attendibile. – masfenix

+1

Sì amico. Altrimenti si vanificherebbe lo scopo della funzionalità di sicurezza nel suo complesso. Immagina di fare questo, impacchettare un virus VBA e mandarti il ​​file. Se il file eseguisse automaticamente macro senza prima chiedermelo, non avrebbe senso avere questa funzionalità di sicurezza aggiuntiva. – Trefex

+0

Vedo il tuo punto, grazie mille. – masfenix

2

Fare firmare la macro da un'autorità fidata.

+0

Access 2007 non consente la firma del codice nei file di database di tipi .accdb, .accdr e .accde. MS ha tolto la funzionalità (e l'ha riportata nella versione 2010). La versione 2007 consentirà la firma del codice nei database di tipo .mdb, altrimenti consentirà solo la firma di un pacchetto di installazione (che non va bene se l'utente finale utilizza Access runtime e non ha un accesso facile all'aggiunta di una posizione attendibile). – jdw

3

È un'opzione per utente. Tutti avrebbero bisogno di "fidarsi" della tua cartella di lavoro.

In Excel, fai clic sul pulsante del menu e seleziona Opzioni di Excel. In questa finestra, seleziona Centro protezione, quindi Impostazioni Centro protezione. In quella finestra, scegli Località attendibili.

Una volta su quella schermata, è consigliabile selezionare "Consenti percorsi attendibili sulla mia rete", quindi fare clic su Aggiungi posizione e aggiungere il percorso di rete della cartella di lavoro.

0

Quello che ho fatto è stato creare un progetto di installazione con Visual Studio 2010 (sotto i progetti di installazione &).All'interno di questo progetto si configura l'installazione/copia dell'applicazione MS Access in "C: \ Ntapps \ MsOffice \ Office12 \ ACCWIZ \". Questa è una cartella per i database attendibili. Quindi creare un collegamento all'applicazione MS Access e installarlo nella posizione desiderata.

Quando tutto è a posto e l'installazione è completa, MS Access (con configurazione predefinita) ora si fida del database.

Good Luck;)

Grtz, Tom

+0

Il normale percorso di installazione predefinito per la cartella menzionata (per Access 2007) è "% ProgramFiles (x86)% \ Microsoft Office \ Office12 \ ACCWIZ". Il tuo percorso non è un percorso predefinito standard e molto probabilmente unico per l'installazione. Nota che questa cartella NON ha accesso in scrittura per un utente senza diritti amministrativi, nel caso in cui qualcuno si chieda se questo rappresenti un buco di sicurezza. – jdw

5

Anche se questa domanda è anni, nel caso in cui essa può aiutare, ecco quello che ho fatto. È un approccio diverso rispetto a quelli già proposti e potrebbe servire a qualcun altro. Nel mio caso, MsAccess non è stato aperto direttamente dall'utente. Invece, MsAccess è stato avviato utilizzando l'automazione da un'altra applicazione personalizzata. Quindi, invece di fare in modo che l'utente faccia clic su "Abilita contenuto", questa applicazione personalizzata indica a MsAccess di abilitare i macro. Qualcosa di simile a questo:

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

(dispiace per il codice di cui sopra, non è da un linguaggio di programmazione 'standard' o 'popolare', ma non dovrebbe essere difficile adattarsi a Visual Basic o qualsiasi altra cosa)

+0

Questo codice è esattamente quello che volevo. Ho cercato un modo per aprire un file di database di accesso nascosto usando l'oggetto applicazione per un lungo periodo. L'impostazione della proprietà 'AutomationSecurity' su 1 era la chiave per sopprimere la finestra di dialogo di avviso posizione attendibile. –