Foglio excel presente anche con visualizzazione form di login

di il
9 risposte

Foglio excel presente anche con visualizzazione form di login

Ho programmato un foglio excel in vba per poter operare in modalità visuale.
Vorrei che aprendo il file excel, si potesse visualizzare solo le form e non il file ecel in sottofondo.
Penso sia possibile mettere il foglio in hide.
potete aiutarmi ? 
Grazie

Moreno

9 Risposte

  • Re: Foglio excel presente anche con visualizzazione form di login

    Quello che tu intendi:

    19/12/2025 - morenog ha scritto:

    mettere il foglio in hide

    in realtà sarebbe utilizzare:

    Application.Visible = False

    Ma bisogna fare attenzione perché rischi di nascondere anche altri file Excel aperti nella stessa istanza.

    Per ottenere questo genere di risultato, mi affido ad uno script in vbs. In pratica con questo script, avvio una nuova istanza e in questa nuova istanza apro il file interessato. Quindi andrò a nascondere solo quella istanza, lasciando libere eventuali altre che magari aprirò.

  • Re: Foglio excel presente anche con visualizzazione form di login

    Grazie Alexps81

    Ti ringrazio per il sensato consiglio che mi hai dato.
    Francamente avevo pensato anch'io a non rendere visibile l'applicazione, ma non saprei come scrivere quello script.
    L'intendimento sarebbe appunto di rendere non visibile solo quest'istanza di excel e non bloccare, come giustamente fai osservare tu, altre eventuali istanze di excel che dovessero venir attivate.

    Ho fatto la macro che mi hai indicato

    Sub HiddenApplicazione()
        Application.Visible = False
    End Sub
         

    e' sufficiente e come faccio ad attivarla per poter aver aperto solo la form di login dell'utente e nessun file excel nativo ?
    Grazie
    Moreno

  • Re: Foglio excel presente anche con visualizzazione form di login

    Dunque dovresti procedere così:

    1) Apri il Blocco Note e ci incolli questo:

    Dim xlApp, WB, FSO, scriptPath, scriptFolder, excelFile
    Set FSO = CreateObject("Scripting.FileSystemObject")
    scriptPath = WScript.ScriptFullName
    scriptFolder = FSO.GetParentFolderName(scriptPath)
    excelFile = scriptFolder & "\TuoFileExcel.xlsm"
    Set xlApp = CreateObject("Excel.Application")
    xlApp.WindowState = -4137
    xlApp.Visible = False
    Set WB = xlApp.Workbooks.Open(excelFile)

    Fai attenzione alla riga: excelFile = scriptFolder & "\TuoFileExcel.xlsm" <<<< qui devi indicare il nome del file che devi aprire.

    Poi Salva con nome e chiamalo come più ti piace, l'importante è che alla fine del nome gli aggiungi .vbs e scegli SALVA COME: TUTTI I FILE (*.*)

    Esempio: "LanciaFile.vbs"

    Ora hai creato lo script per lanciare il file.

    Poi in Questa_cartella_di_lavoro del tuo file Excel, nell'evento Open ci metti:

    Option Explicit
    Private Sub Workbook_Open()
        UserForm1.Show
    End Sub

    Ovviamente devi indicare il vero nome da UserForm. Io ho ipotizzato che fosse UserForm1.

    Servirà anche la proceduta di chiusura del Workbook altrimenti anche quando pensi di averlo chiuso, rischi di lascialo aperto ma nascosto e tu non te ne accorgi. Un primo passo può essere semplicemente questa macro nella UserForm:

    Option Explicit
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
       Application.Quit
    End Sub

    Però ripeto...è solo un accenno questo perché con Quit chiudi brutalmente il Workbook senza salvare nulla. Quindi penso che necessita di una procedura ad hoc che Salva&Chiude

    Una volta che hai fatto tutto...raggruppa lo script in vbs e il file Excel nello stesso percorso (devono stare entrambi nella stessa cartella!) e lancia lo script con doppioclick del mouse e vedi se funziona. Se fa ciò che vuoi...prova ad aprire/manipolare/chiudere altri file Excel in contemporanea a questo e vedi se hai problemi.

  • Re: Foglio excel presente anche con visualizzazione form di login

    Ciao Alexps81

    Grazie per il supporto davvero speciale.
    Ho screato il file startApp.vbs con la script che mi hai gentilmente compilato.
    la cartella che contiene il file xlsm è "test"
    Mi hai lasciato come step della soluzione


    Poi in Questa_cartella_di_lavoro del tuo file Excel, nell'evento Open ci metti:

    Option Explicit
    Private Sub Workbook_Open()
        UserForm1.Show
    End Sub

    Ovviamente devi indicare il vero nome da UserForm. Io ho ipotizzato che fosse UserForm1.

    Quindi se non interpreto male il tuo pensiero nella cartella "test" dovrei avere un evento "open"
    Non riesco a vederlo e quindi non riesco a inserire il codice ceh mi hai gentilmente consiglito.
    SE invece devo fare una correzzione nel file .xlsm non vedo evento Open

    Mi scuso se faccio un'osservazione davvero poco professionale, ma non vorrei fare qualche errore che impedisca il buon funzionamento dello script.
    Grazie
    Moreno

  • Re: Foglio excel presente anche con visualizzazione form di login

    Guardando l'immagine che hai allegato...in alto sulla sinistra, sopra a Form trovi Questa_cartella_di_lavoro. Fai doppioclick e cerca l'evento Open (anche se non serve perché se incolli il codice che ti ho mandato già va bene così).

    Ricordati anche di Application.Quit da mettere nella UserForm di chiusura del tuo File.

  • Re: Foglio excel presente anche con visualizzazione form di login

    Rispondo in ritardo al tuo post.
    se non interpreto male nella cartellaa indicata in rosso nello screenshot 

    dovrei fare doppio click sulla caartella, dovrebbe aprirsi l'evento "Open".
    Non aapre nessun evento; probabile quindi che abbia male interpretato il tuo pensiero.
    Puoi ripetermi dove devo cliccare per avere l'evento "Open" ?
    Grazie per la pazienza e colgo l'occasione per farati i miei migliori aauguri di un Sereno e Santo Natale a te e famiglia.
    Grazie
    Moreno

  • Re: Foglio excel presente anche con visualizzazione form di login

    No, devi fare doppiclick qui:

    Ricordati sempre di aggiungere:

    Option Explicit
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        Application.Quit
    End Sub

    nella UserForm di chiusura del file

  • Re: Foglio excel presente anche con visualizzazione form di login

    Ciao Alexps81
    Grazie per il tuo preziosi consigli.
    Ho fatto la modifica du "Questa cartella di lavoro" e messo Application.quit sull'evento UserForm_QueryClose nella form di chiusura.
    Chiude perfettamente.

    Vedo comunque che apreno il file excel, mi visualizza la form di login che deve essere la prima form che viene presentata all'utente, ma compare comunque come sfondo il file excel che ho lanciato.
    nell'evento Workbook_open, sotto a userform1.show devo mettere Application.hide per non vedere come sfondo il file excel aperto ?

    Option Explicit
    Private Sub Workbook_Open()
        UserForm1.Show
    End Sub

    Seconda domanda.
    Se dovessi voler chiudere l'applicazione già a livello di login (perchè per errore ho aperto questo file e lo voglio chiudere senza fare nessuna attività) devo mettere

    Option Explicit
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        Application.Quit
    End Sub

    anche sulla maschera di login ?
    Grazie
    Moreno

  • Re: Foglio excel presente anche con visualizzazione form di login

    24/12/2025 - morenog ha scritto:

    Vedo comunque che apreno il file excel, mi visualizza la form di login che deve essere la prima form che viene presentata all'utente, ma compare comunque come sfondo il file excel che ho lanciato.

    Il file, d'ora in poi, lo devi aprire dallo script che ti ho fatto creare.

    24/12/2025 - morenog ha scritto:

    devo mettere Application.hide

    No...non esiste nemmeno Application.Hide ma Application.Visible = False ma questo comando te l'ho fatto mettere già nello script

    24/12/2025 - morenog ha scritto:

    Se dovessi voler chiudere l'applicazione già a livello di login

    Per poter chiudere il file devi utilizzare Application.Quit perché l'applicativo è aperto ma invisibile. Se chiudi tutte le UserForm e basta, l'applicativo rimane sempre aperto. Perciò devi sapere tu in quali UserForm tenterai la chiusura del File. Se hai tante UserForm (ad esempio frmLogin, frmMain, frmClienti, frmElencoMerce, frmPersonale, ecc...) ma possibilmente la chiusura del File può avvenire sia in frmLogin che frmMain allora dovrai eseguire Application.Quit in entrambe.

Devi accedere o registrarti per scrivere nel forum
9 risposte