› Sviluppare funzionalita su Microsoft Office con VBA › Nascondere Excel
-
AutoreArticoli
-
Grazie sarà fatto!
Anche per me il tempo per oggi è finito, forse un'oretta nel pomeriggio ma sicuramente domani pomeriggio ci metto mani
ho provato a scaricare il file postato precedentemente ed in effetti non lo apriva neanche a me.
l'ho aperto e salvato cambiandone il nome e questo sembra funzioni.
Non ne conosco la causa ma l'unica accortezza da avere una volta scaricato il file sul proprio pc,
perchè funzioni correttamente bisogna aprirlo, chiuderlo e riaprirlo una seconda volta.
Allegati:
You must be logged in to view attached files.Ti ringrazio ma non fanno al mio caso, ti spiego:
l'istruzione :
Windows(Nomecartella).Visible= Falsenasconde si la cartella di lavoro ma non mi permette di accedervi e quando lo faccio ritorna l'errore "Metodo o proprietà non appartenente all'oggetto" o qualcosa del genere.
Invece, l'istruzione :
Application.WindowState= xlMinimizedmette ad icona tutto, anche lo userForm Principale.
Dirò al mio amico che quando userà il gestionale non dovrà aprire o avere aperto in precedenza altri file Excel.
sto sviluppando un gestionale, il quale all'apertura nasconde Excel e mostra il form Principale (lavora tutto su userForm)
questo lo hai scritto all'apertura della discussione, quindi sul form devi avere tutti gli oggetti per gestire
il file. I ho messo solo 2 pulsanti per potere fare le prove di cui uno chiude il form e apre il foglio di lavoro,
su quale ho messo un altro pulsante per riaprire il form.
Siccome hai scritto inoltre
==============================================
"LucaSR ha scritto:
però mi sono reso conto che se avessi aperta qualche altra cartella di lavoro, nasconde tutto."
==============================================
Ho fatto in modo che se chiudi il file con lo UserForm, gli altri files rimangano aperti.
Se non ti serve... pazienza. Io mi sono divertito comunque.
P.S.
Sono dell'idea che qualche modifica.....
Frank
Inoltre ho
Innanzitutto grazie per la pazienza, non ho detto che non mi serve ma che non fa al caso mio attualmente.
Ho imparato altre 2 istruzioni, scritte nel mio post precedente, che non conoscevo e sicuramente userò in altri contesti.
Possibilmente hai ragione, con qualche modifica forse riuscirei ad implementarle. Come avevo detto qualche post fa, oggi era una giornata impegnativa. Praticamente oggi mia figlia voleva fare l'albero, e mi sono sentito una palla pazza tra lei, l'albero ed il PC
Luca prova a vedere se ti può andar bene una cosa del genere,
al cliccare sul file, all'avvio il foglio excel si nasconde e rimane solo la userform.
magari cerca di adattarlo ancora, e migliorarlo
ma avrei un piccolo suggerimento per fregare excel;
a te serve anche il codice che chiude anche la cartella di allocazione del file, vero?
bhe io farei un collegamento sul desktop, così lanciando il file non hai il problema delle cartelle aperte.
ma vedrai solo la userform
Allegati:
You must be logged in to view attached files.Ciao @dodi grazie per l'interessamento. Sono a lavoro, stasera dopo il calcolo delle performance del mio progetto della sfida dei palindromi, gli darò un'occhiata
Cioa @dodi riesco a controllare solo adesso il tuo file, ieri sera ho fatto tardi per postare il risultato finale che misura anche le performance della sfida sui palindromi.
Ti spiego il mio progetto, quando apro la cartella di lavoro nascondo l'applicazione e mostro il form Principale, come hai fatto tu, poi di conseguenza verranno richiamati gli altri vari form in base a quello che fa l'utente.
C'è un grosso però, nel mio caso avendo aperto in precedenza il progetto in questione e dopo un'altra qualsiasi cartella di lavoro mi ritorna errore "Excel non può eseguire l'operazione perché una finestra di dialogo è già aperta". Però appena chiudo il progetto mostra la cartella di lavoro che stavo cercando di aprire prima dell'errore.
Invece aprendo prima il tuo file e dopo un'altra cartella di lavoro, praticamente superi l'errore, solo che si apre l'interfaccia di excel in entrambi i file.
Comunque ci stiamo avvicinando
grazie milleL'importante e che con quello che ti ho proposto hai fatto un passo avanti e che ti è servito in parte,
Provo a rileggere quello che hai scritto e cerco di capire se nei miei gestionali ho utilizzato un qualcosa di simile a quello che cerchi.
spulciando il tuo file ho trovato l'istruzione:
form.show vbModalessche secondo me bypassa l'errore sopradescritto, questo equivale a togliere la modalità Modal direttamente dalle proprietà del form in fase di progettazione?
Detto questo, non è possibile alla perdita del focus del mio progetto, fare in modo che venga nascosto solo quest'ultimo!?
Appena ho 2 minuti, provo ad implementare la terza soluzione descritta nel video postato da @oscar al post #41621.
Seguendo il video ho creato questo script ".vbs" :
'Apro Excel Set myExcel = CreateObject("Excel.Application") 'Rendo visibile la madre di Excel myExcel.Visible = True 'Apro la madre di Excel myExcel.Workbooks.Open "percorso assoluto del file da aprire",,TRUEeffettivamente fa al mio caso, con alcune cose considerazioni.
Come vedete il percorso da aprire è assoluto, io invece vorrei che il percorso fosse relativo. Mi spiego:
Tutto il progetto lavorerà all'interno di una specifica cartella, sia il file ".xlsm" del progetto e sia tutte le sottocartelle relative ai Soci con all'interno i vari documenti scannerizzati. Vorrei inserire il file ".vbs" anch'esso dentro questa cartella, ed eventualmente creare un collegamento sul desktop del mio amico che faccia aprire il file ".vbs". Questo anche perché mi ha detto che molto probabilmente terrà la cartella che gli consegnerò dentro un supporto esterno, da tenere sempre a portata di mano ovunque lui sia.
Altro problema, l'istruzione che ho scritto prima di uscire da Excel :
'Chide Excel ThisWorkbook.Close savechanges:=Truemi fa apparire la finestra di dialogo, predefinita in Windows, per il salvataggio del file come se non fosse MAI stato salvato prima
Altro problema, l'istruzione che ho scritto prima di uscire da Excel :
'Chide ExcelThisWorkbook.Close savechanges:=Truemi fa apparire la finestra di dialogo, predefinita in Windows, per il salvataggio del file come se non fosse MAI stato salvato prima
Magari mi sbaglio...ma con:
myExcel.Workbooks.Open "percorso assoluto del file da aprire",,TRUE '<----sola letturanon apri il file in sola lettura?
Io ho provato impostandolo a False e non mi compare la richiesta da salvataggio.
Grazie ci provo domani, stanotte si lavora
Effettivamente l'ho copiato pari pari, senza conoscerne il funzionamento
Seguendo il video ho creato questo script ".vbs" :
Guarda mi sono un po' andato a studiare il codice del VBS e può essere che se lo scrivi così potrebbe bastare:
Set objShell = CreateObject("Wscript.Shell") strPath = objShell.CurrentDirectory Set objFSO = CreateObject("Scripting.FileSystemObject") set fso = CreateObject("Scripting.FileSystemObject") 'Apro Excel Set myExcel = CreateObject("Excel.Application") 'Rendo visibile la madre di Excel myExcel.Visible = True 'Apro la madre di Excel myExcel.Workbooks.Open strPath & "\NomeFile.xlsm",, FalseIn pratica lo script VBS e il file .xlsm devono risiedere nella stessa Directory. Così anche se sposti la cartella dovrebbe aprirlo lo stesso. Sempre se ho inteso bene la tua richiesta.
'Apro Excel Set myExcel = CreateObject("Excel.Application") 'Rendo visibile la madre di Excel myExcel.Visible = True 'Apro la madre di Excel myExcel.Workbooks.Open strPath & "\NomeFile.xlsm",, FalseNon ho mai sentito parlare de "la madre" di Excel riferito al suo oggetto superiore. Di solito si dice "padre" per indicare l'oggetto da cui gerarchicamente dipende il figlio.
Tecnicamente la proprietà che lo referenzia è .Parent, che si dovrebbe tradurre solo con "genitore"... teniamo la mente aperta
Tecnicamente la proprietà che lo referenzia è .Parent, che si dovrebbe tradurre solo con "genitore"... teniamo la mente aperta
Ed il ... chiuso
Ed il ... chiuso
🤦♂️
Qui non discutiamo comunque di gusti e preferenze personali
Volevi dire che il caso è chiuso?
ciao
sicuramente io mi sto rincoglionendo ed aggiungo sono scemo,ma non ho ancora capito se tu utilizzando il tuo file ESCLUSIVAMENTE da UserForm vuoi:
che INDIPENDENTEMENTE tu abbia altre cartelle aperte,
il Thisworbook alla chiusura (del file o della finestra del file ?????)
sia SALVATO oppure NO!
=========================================================================
Sicuramente per i più sgamati dirò un'ovvietà che lo è anche per me,
ma se al soddisfacente punto a cui sei a arrivato, se non vuoi che appaia la "finestra di dialogo" con
"Salva" - "Non salvare" - Annulla"
basta mettere l'istruzione
Application.DisplayAlerts = Falsealla riga di codice adeguata e non ho dubbi sulla tua capacità ad individuarla.
Ora sono stanco e per me questa discussione è STRARISOLTA e STRAFINITA.
Buona notte
P.S.
salvo errore ,
alla presente disussione non ho mai visto un tuo file allegato che aiutasse a capire il problema...
Ciao @tanimon (Frank), intanto ti ringrazio per la pazienza ed il tempo libero che hai dedicato a me
Ho allegato parte del progetto inerente alla questione in merito, basta chiedere
Capisco che per te la discussione sia strarisolta, ma per me no!!! Di mio sono una persona precisina, in più stiamo parlando di progetto che mi ha commissionato un mio AMICO e collega. Detto questo non mi posso permettere di fare brutta figura verso una persona a cui voglio bene ed in più essendo anche dell'ambito lavorativo, devo cercare di fare bella figura (le cose della vita non si sanno mai
).Allegati:
You must be logged in to view attached files.Ciao @alexps81, grazie
, forse sono riuscito a risolvere il mio problema
'Devo studiare tutto questo codice set objShell = CreateObject("Wscript.Shell") 'Recupera il percorso della cartella strPath = objShell.CurrentDirectory 'Apro Excel Set myExcel = CreateObject("Excel.Application") 'Rendo visibile la madre di Excel myExcel.Visible = True 'Apro la madre di Excel myExcel.Workbooks.Open strPath & "\Asilo.xlsm",,Falsenon ho capito a cosa servissero queste 2 righe di codice, essendo non utilizzate le ho rimosse :
Set objFSO = CreateObject("Scripting.FileSystemObject") set fso = CreateObject("Scripting.FileSystemObject")adesso non mi resta che fare qualche test supplementare (appena ho un pò di tempo) e poi metterò RISOLTO
Sei stato un grande!!!
Mi hai tolto un bel .a..o dal .u.o
L'ho segnato come Risolto, 10 punti ad @alexps81
Mi hai tolto un bel .a..o dal .u.o
La prossima sfida sarà sui rebus così LucaSR la vince facile
non ho mai creato uno script
*sigh* ...comunque wscript (codice VB-like scritto in file con estensione vbs per intendersi) non è un mistero così misterioso ed esiste da tanto tempo che adesso Microsoft ha deciso di toglierlo da Windows (dovrebbe restare jscript comunque) -
AutoreArticoli
