Attivare macro con installer per app Be-Fe

di il
9 risposte

Attivare macro con installer per app Be-Fe

Salve a tutti, da un po' pensavo che, potrebbe essere particolarmente comodo distribuire un applicazione di access senza ogni volta dover inviare cartelle aggiuntive o eliminare quel fastidioso avviso di dover attivare le macro....
Facendo seguito a questo post https://www.iprogrammatori.it/forum-programmazione/access/abilita-macro-codice-vba-t23176.html, volevo utilizzare il suggerimento di Alex relativo all'utilizzo di un installer, utilizzando quindi InnoSetup.

Il problema forse è relativo al fatto che il mio db è diviso in Be e Fe quindi quando ricollego le tabelle, mi chiede di attivare le macro per ogni tabella... esiste un metodo per eludere questi avvisi o attivarli tutti ed eventualmente ripristinare la chiave di registro allo stato originale dopo aver chiudo il db?

9 Risposte

  • Re: Attivare macro con installer per app Be-Fe

    Se non ricordo male basta registrare in Trusted Location Registry la path...
    https://social.msdn.microsoft.com/Forums/en-US/a3cb49c3-de8d-41e4-b9ef-77a2f3efeab9/add-ms-access-trusted-location?forum=scripting
  • Re: Attivare macro con installer per app Be-Fe

    @Alex ha scritto:


    Se non ricordo male basta registrare in Trusted Location Registry la path...
    https://social.msdn.microsoft.com/Forums/en-US/a3cb49c3-de8d-41e4-b9ef-77a2f3efeab9/add-ms-access-trusted-location?forum=scripting
    Ciao Alex, grazie mille per la segnalazione. Ho inserito le stringhe all'interno di una funzione pubblica e richiamata tramite la macro Autoexec
    Public Function AbilitaMacro()
    Vers = Access.Version
    
    Dim wshshell
    Set wshshell = wscript.CreateObject("WScript.Shell")
    
    wshshell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Vers & "\Access\Security\Trusted Locations\Location3\Path", "C:\PROVA", "REG_SZ"
    
    wshshell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Vers & "\Access\Security\Trusted Locations\Location3\AllowSubfolders", 1, "REG_DWORD"
    
    wshshell.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Vers & "\Access\Security\Trusted Locations\Location3\Description", "Accounting", "REG_SZ"
    End Function
    
    Però mi segnala "Variabile oggetto o variabiledel blocco With non impostata" su questa stringa...ho saltato qualcosa nella prova?
    Set wshshell = wscript.CreateObject("WScript.Shell")
    
  • Re: Attivare macro con installer per app Be-Fe

    zio Ken ha scritto:


    Però mi segnala "Variabile oggetto o variabiledel blocco With non impostata" su questa stringa...ho saltato qualcosa nella prova?
    Set wshshell = wscript.CreateObject("WScript.Shell")
    
    Perché ti sei fatto prendere dal link suggerito da @Alex dove è tutto scritto in VbScript (ammesso che quella sintassi sia giusta per VbScript, non lo so) e hai già dimenticato quanto aveva scritto sempre @Alex nel link che tu stesso hai indicato nel post di apertura e che riporto qui per la parte che interessa
    Dim Ws As Object
    Set Ws=CreateObject("WScript.Shell")
    Ovviamente devi usare il nome della variabile giusta ma ecco come si assegna un oggetto in latebinding
  • Re: Attivare macro con installer per app Be-Fe

    Ciao Phil, grazie per l'intervento. Ho provato modificando il codice come da te suggerito ed in primis suggerito da Alex, ma non andava ed alla cieca avevo ripristinato lo stato delle cose dovendo sopperire in quel momento...però ancora nulla...
    Secondo me o manco qualcosa o manca qualcosa nello script perchè mi richiede di attivare le macro per ogni tabella...
    sto dando un occhiata sul web e vi è un programma che esegue questa operazione ma, bisogna scaricare "X" programmini per prevedere la versione utilizzata dal consumatore o bisognerebbe creare un file .reg inserendo le info da aggiungere al registro...ma mi sembra "sporca" come cosa...

    Voi come risolvereste in questo caso? Perchè mi sembrava più pulito assegnare una chiave di registro e cancellarla all'uscita
  • Re: Attivare macro con installer per app Be-Fe

    Non componi correttamente il percorso del registro... che come dovresti capire dipende dalla versione.
    No codice la variabile Vers deve essere valorizzata da application.version.
  • Re: Attivare macro con installer per app Be-Fe

    PErfetto, ho eseguito quanto suggerito ed in parte ho risolto però alla prima apertura, mi da comunque errore sulla macro Autoexec che viene bloccata (lancia appunto la funzione in oggetto al 3d) per poi dover a mano abilitare il contenuto...
    Come potrei eludere/evitare questi passaggi in maniera tale che l'applicazione esegua questi passaggi per non bloccarsi?
  • Re: Attivare macro con installer per app Be-Fe

    Ciao.
    scusa ma se alla prima apertura ti chiede di abilitare il contenuto allora non hai risolto neanche in parte
    ...se avessi fatto tutto a dovere non dovrebbe chiederti di attivare il contenuto neanche alla prima apertura...
  • Re: Attivare macro con installer per app Be-Fe

    zio Ken ha scritto:


    PErfetto, ho eseguito quanto suggerito ed in parte ho risolto però alla prima apertura, mi da comunque errore sulla macro Autoexec che viene bloccata (lancia appunto la funzione in oggetto al 3d) per poi dover a mano abilitare il contenuto...
    Come potrei eludere/evitare questi passaggi in maniera tale che l'applicazione esegua questi passaggi per non bloccarsi?
    Infatti la soluzione non era questa, ma dovevi modificare il REGISTRY con InnoSetup e poi aprire Access...

    Tieni presente che da InnoSetup, oltre che modificare il Registry, puoi accedere via Script a JET e scrivere con ADO nel Database...
    Su 2 piedi non ricordo come facevo a rilevare la versione di Access... saranno 10 anni che non lo uso più... ma in Rete nel sito di InnoSetup o di ThirdyParts... trovi stralci di codice pronto...
  • Re: Attivare macro con installer per app Be-Fe

    Ciao Alex, ancora grazie per l'intervento
    Ho trovato questo post, simile alle mie esigenze https://stackoverflow.com/questions/5094546/inno-setup-update-hkcu-of-original-user-in-win7-vista commento #3 dove viene postato questo codice
    [Registry]
    ; Add the application folder as a trusted location for Access 2007 for the installing user (degrades gracefully for Windows 2000 and earlier)
    Root: HKCU; SubKey: Software\Microsoft\Office\[b]12.0[/b]\Access\Security\Trusted Locations\{#DirName}; ValueType: string; ValueName: Path; ValueData: {app}; Check: [b]AccessVersion('2007')[/b];
    Root: HKCU; SubKey: Software\Microsoft\Office\[b]12.0[/b]\Access\Security\Trusted Locations\[b]{#DirName}[/b]; ValueType: string; ValueName: Description; ValueData: Grandjean and Braverman applications; Check: AccessVersion('2007');
    Root: HKCU; SubKey: Software\Microsoft\Office\[b]12.0[/b]\Access\Security\Trusted Locations\{#DirName}; ValueType: dword; ValueName: AllowSubfolders; ValueData: 1; Check: AccessVersion('2007');
    
    [Run]
    ; Add the application folder as a trusted location for Access 2007 for the current user
    Filename: Reg.exe; Parameters: "add ""HKCU\Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\{#DirName}"" /v Path /t REG_SZ /d ""{app}"" /f"; Flags: runasoriginaluser; Check: AccessVersion('2007'); StatusMsg: Adding trusted location...
    Filename: Reg.exe; Parameters: "add ""HKCU\Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\{#DirName}"" /v Description /t REG_SZ /d ""Grandjean and Braverman applications"" /f"; Flags: runasoriginaluser; Check: AccessVersion('2007'); StatusMsg: Adding trusted location...
    Filename: Reg.exe; Parameters: "add ""HKCU\Software\Microsoft\Office\12.0\Access\Security\Trusted Locations\{#DirName}"" /v AllowSubfolders /t REG_DWORD /d 1 /f"; Flags: runasoriginaluser; Check: AccessVersion('2007'); StatusMsg: Adding trusted location...
    Dove se ho ben capito, in {#DirName} devo inserire la Location(n) ma la inserisco io a mano o vi è un metodo per rilevare quella disponibile? Nel senso che se imposto la Location3 e quest'ultima è già "occupata" come posso procedere per la successiva?
    Bisogna inserire tutti i vari possibili riferimenti al registro per le X versioni di access?
    Inoltre quando eseguo il complile mi si blocca segnalandomi la AccessVersion('2007')
    Se mi ci mandi, visto che non esegui più queste operazioni ti capisco ma è giusto, magari per voi che masticate questi riferimenti a codici, sapete indicarmi la retta via

    EDIT:
    trovato anche quest'altro link relativo però ad access 2010 https://www.experts-exchange.com/questions/28174471/Access-2010-and-Inno-Setup.html
Devi accedere o registrarti per scrivere nel forum
9 risposte