Autocompilazione dei bookmarks di word da una maschera Access 2016

Anonimo
2019-01-21T21:52:48+00:00

Buonasera a tutti.

Ho un problema nell'apertura di un modulo Word da un pulsante di una maschera di Access 2016.

Mi spiego meglio: Ho creato un database con Access 2016 in cui c'è una maschera che contiene dei pulsanti che servono per aprire  determinati modelli di Word da me creati con dei bookmarks. Praticamente al click del pulsante si dovrebbe aprire in primo piano il determinato modello di Word con i Bookmarks compilati con i campi "Cognome", "Nome" e "Data di nascita" attinti dalla schermata della maschera di Access in quel momento aperta. Complilando l'evento "su click" nelle proprietà dello specifico bottone con il codice che di seguito posterò, ottengo si l'apertura in primo piano dello specifico modello di Word, ma i Bookmarks sono vuoti in quanto non so come creare i riferimenti ai campi nel codice. Potreste cortesemente aiutarrmi su come devo creare il codice idoneo al caso?

Il codice da me usato è il seguente:

Dim wshshell As Object

Set wshshell = CreateObject("wscript.shell")

wshshell.Run """C:\Percorso\Nome_file"""

Rimanendo in attesa di suggerimenti, ringrazio anticipatamente.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

36 risposte

Ordina per: Più utili
  1. Anonimo
    2019-02-02T20:37:29+00:00

    Ciao Vladimiro,

    ho appena finito di provare la tua ultima porzione di codice con l'inserimento anche della macro.

    Questa volta il tutto funziona ma non cambia nulla rispetto a prima in quanto il file di Word risulta aperto ma ridotto a icona nella barra delle applicazioni. Pertanto non so più che pesci pigliare.

    Cos'altro pensi sia utile fare?

    Ringraziandoti sempre ti invio cordiali saluti.

    Ciao,

    come già ti ho scritto, l'unica cosa da fare è quella di poter visionare il tuo database e il tuo file Word; naturalmente eliminando eventuali dati sensibili.

    Altro non saprei.

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-02-02T20:24:14+00:00

    Ciao Vladimiro,

    ho appena finito di provare la tua ultima porzione di codice con l'inserimento anche della macro.

    Questa volta il tutto funziona ma non cambia nulla rispetto a prima in quanto il file di Word risulta aperto ma ridotto a icona nella barra delle applicazioni. Pertanto non so più che pesci pigliare.

    Cos'altro pensi sia utile fare?

    Ringraziandoti sempre ti invio cordiali saluti.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2019-02-01T22:02:39+00:00

    A questo punto ti chiedo quale nome devo dare al modulo? E inoltre posso eseguire dallo stesso pulsante una macro e a seguire una ruotine evento?

    Confidando sempre in un tuo prezioso aiuto, ti saluto cordialmente.

    Ciao,

    al modulo puoi assegnare qualsiasi nome in quanto da una macro o da un codice VBA non richiami il modulo, bensì le funzioni scritte al suo interno.

    La macro "Autoexec", a differenza delle altre macro, ha la proprietà di lanciare qualsiasi azione in apertura database.

    A questo punto non saprei come altro aiutarti.

    Come già ti ho scritto precedentemente, l'unica cosa che potresti fare è quella di mettere online una demo che rappresenti con pochi dati la tua situazione, più il tuo file Word.

    Se vuoi puoi fare così:

    metti la demo in una cartella pubblica di: www.skydrive.com che è gratis.

    Fai click destro sul file per creare il collegamento, lo copi e lo incolli qui sopra.

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2019-02-01T19:31:35+00:00

    Ciao Vladimiro,

    si, la prima versione di codice è quella.

    Per quanto riguarda il codice da te postato, si, è vero che aveva un solo bookmarks, ma anche uno solo doveva compilarlo. Purtroppo a me non lo compila.

    Poi, non ti voglio irretire, non sono ostinato a usare il file .docx, il fatto è che non ho molto tempo per potermi dedicare a queste cose e quindi cerco di fare meno variazioni possibili. Sicuramente i suggerimenti che tu mi dai li eseguo completamente in quanto tu sicuramente sei si può dire un professionista del software mentre io sono appena un neofita che muove i primi passi, quindi non devo essere convinto di una procedura ma devo solo imparare a metterla in pratica.

    Pertanto proprio ora ho convertito i files .docx in modelli .dotx ma appena aperto il DB, al click sul pulsante che deve aprire il modello, il comportamento è uguale a prima. Cioè il modello viene aperto ma ridotto a icona nella barra delle applicazioni. Alla luce di tutto questo mi trovo costretto a provare la rimanente parte di codice che va inserito in un modulo standard come tu mi hai detto. A questo punto ti chiedo quale nome devo dare al modulo? E inoltre posso eseguire dallo stesso pulsante una macro e a seguire una ruotine evento?

    Confidando sempre in un tuo prezioso aiuto, ti saluto cordialmente.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2019-01-31T21:11:44+00:00

    Ciao,

    Ciao Vladimiro,

    ti ho postato le due versioni di codice in mio possesso in quanto quello tuo non dava i risultati da me voluti.

    scusa, questa sarebbe la prima versione di codice?

    Dim wshshell As Object

    Set wshshell = CreateObject("wscript.shell")

    wshshell.Run """C:\Percorso\Nome_file"""

    e poi scusa, che significa che la mia routine non dava i risultati voluti se ho inserito come riferimento un solo Bookmarks a cui ho assegnato il controllo "Cognome"?

    per visualizzare in primo piano il file di Word nella mia seconda versione di codice?

    Probabilmente non mi sono spiegato bene.

    Per visualizzare in primo piano il file di Word, lo stesso deve avere le caratteristiche di "Modello di Word" con estensione ".dotx" e ti ho fatto vedere figurativamente come ottenerlo.

    Che cos'è un modello di Word? 

    A differenza di un file di Word con estensione ".docx" (tanto per capirci, quello usato da te), un modello di Word è semplicemente un contenitore che mantiene la sua formattazione immutabile nel tempo, ecco perché non si riduce mai ad icona.

    Quando richiedi di salvare i dati avuti con l'automazione, non fai altro che salvare un nuovo file ".docx" clonato.

    Magari come si fa a richiamare prima della seconda versione di codice, contenuto in un private sub, un'altra serie di codice contenuto in un modulo standard (che serve proprio a portare in primo piano il file di Word)?

    se ancora non ti ha convinto quanto detto e magari sei ancora intenzionato a fare a meno di un modello di Word volendo ripristinare il tuo file ridotto a icona, prova a fare in questo modo:

    in un modulo standard inserisci le seguenti funzioni:

    #If Win64 Then

        Private Declare PtrSafe Function ShowWindow _

                 Lib "user32" (ByVal hwnd As LongPtr, _

                               ByVal nCmdShow As Long) As Long

    #Else

        Private Declare Function ShowWindow _

                Lib "user32" _

                              (ByVal hwnd As Long, _

                               ByVal nCmdShow As Long) As Long

    #End If

    Private Const SW_HIDE As Long = 0

    Private Const SW_MAXIMIZE As Long = 3

    Private Const SW_MINIMIZE As Long = 6

    Private Const SW_RESTORE As Long = 9

    Private Const SW_SHOW As Long = 5

    Private Const SW_SHOWDEFAULT As Long = 10

    Private Const SW_SHOWMAXIMIZED As Long = 3

    Private Const SW_SHOWMINIMIZED As Long = 2

    Public Function setAppSize()

    ShowWindow hwnd:=Application.hWndAccessApp, nCmdShow:=SW_MAXIMIZE

    'ShowWindow hwnd:=Application.hWndAccessApp, nCmdShow:=SW_RESTORE

    End Function

    richiamando la funzione "setAppSize" tramite la "macro Autoexec":

    Vladimiro

    La risposta è stata utile?

    0 commenti Nessun commento