Condividi:        

vba word: minimizzare foglio e lasciare userform

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

vba word: minimizzare foglio e lasciare userform

Postdi karug64 » 25/08/16 19:54

Salve a tutti.

Nell'evento open del documento docm ho inserito il seguente codice:

Codice: Seleziona tutto
Private Sub Document_Open()
Application.WindowState = wdWindowStateMinimize
UserForm1.Show
End Sub


con l'idea di minimizzare il foglio di lavoro e di lasciare a video solo la userform1 (che funge da menu e da cui lancio tutte le altre).

Purtroppo il documento resta in bella vista ....

Come si può risolvere ?

Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Sponsor
 

Re: vba word: minimizzare foglio e lasciare userform

Postdi Anthony47 » 26/08/16 00:54

Sempre?
A me il comportamento e' corretto (salvo che il documento rimane visibile nella barra delle applicazioni e da lì puo' essere aperto)
Per qualcosa di piu' "duro", puoi lavorare sulla visibilita' della finestra:
Codice: Seleziona tutto
ActiveWindow.Visible = False
'....
ActiveWindow.Visible = True


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba word: minimizzare foglio e lasciare userform

Postdi karug64 » 26/08/16 09:48

Grazie Anthony.

Vorrei evitare il visible = false per una serie di motivazioni, prima tra le quali il fatto che se per un errore qualsiasi il programma si blocca l'utente non riesce a recuperare la finestra ....

Come puoi vedere nell'immagine

Immagine

il foglio resta sotto, sempre.

Utilizzo win 10 64bit con office 2010.

Strano, no ?
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: vba word: minimizzare foglio e lasciare userform

Postdi Anthony47 » 26/08/16 23:55

Effettivamente se ci sono piu' di un documento aperti anche a me la finestra non si minimizza...
Questa modifica sembra che riporti tutto alle attese:
Codice: Seleziona tutto
Private Sub Document_Open()
mytim = Timer
Do
    DoEvents
    If Timer > (mytim + 0.5) Then Exit Do
Loop
Application.Activate
Application.WindowState = wdWindowStateMinimize
'etc etc

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba word: minimizzare foglio e lasciare userform

Postdi karug64 » 27/08/16 00:16

Anthony47 ha scritto:Effettivamente se ci sono piu' di un documento aperti anche a me la finestra non si minimizza...
Questa modifica sembra che riporti tutto alle attese:
Codice: Seleziona tutto
Private Sub Document_Open()
mytim = Timer
Do
    DoEvents
    If Timer > (mytim + 0.5) Then Exit Do
Loop
Application.Activate
Application.WindowState = wdWindowStateMinimize
'etc etc

Ciao


Ok. Anthony. Ora funziona, ma c'è un piccolo problema: l'userform1 resta dietro le eventuali finestre. Nell'immagine che posto il file si chiama doc3.docm e sta dentro la cartella test.
L'utente apre la cartella e clicca due volte sul file che si apre riducendo ad icona word, ma userform resta dietro la cartella (nell'immagine ho spostato leggermente per far capire il concetto, ma in effetti non si vede nulla).

Immagine

C'e' modo di portare in primo piano la form (altrrimentri la soluzione sarebbe creare un collegamento fuori dalle cartelle .....)

Grazie
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22

Re: vba word: minimizzare foglio e lasciare userform

Postdi Anthony47 » 27/08/16 11:40

Mah... l'attivazione di finestre e' comandato da Windows, e da Win7 in avanti e' abbastanza problematico controllare da macro quale finestra attivare.
Prova cosi':
Prima di mostrare la userform attiva l'applicazione:
Codice: Seleziona tutto
Application.WindowState = wdWindowStateMinimize
Application.Activate        '<<<< Aggiungi
UserForm1.Show

Dopo che la userform si chiude, se il doc e' rimasto aperto, massimizza la finestra e attiva l'applicazione:
Codice: Seleziona tutto
Application.WindowState = wdWindowStateMaximize
'Application.Activate            '1
AppActivate "Microsoft Word"     '2 <<<< Aggiungi
In questo caso non funziona la Application.Activate (1) ma la AppActivate (2)

E se anche cosi' non funge proveremo a lavorare con le api di sistema.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19228
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: vba word: minimizzare foglio e lasciare userform

Postdi karug64 » 27/08/16 16:08

Ho apportato le modifiche proposte.
La soluzione funziona, "a singhiozzo"

Ho fatto la prova ad aprire più programmi e poi lanciare il doc3.docm.

Purtroppo, (e non riesco ad intercettare la situazione precisa) a volte tutto va bene, a volte invece, addirittura si apre il documento e la userform non si avvia assolutamente .

Tengo a precisare che sul pc su cui sto sviluppando è installato win 10, ma su quelli in produzione ci sarà win7.

Proprio per questo, ritengo, allo stato attuale di non adottare alcuna soluzione e di tornare alla scelta iniziale, ossia lasciare "a vista" il documento.

Grazie comunque per le soluzioni proposte.
Office 2010
karug64
Utente Senior
 
Post: 746
Iscritto il: 20/11/11 21:22


Torna a Applicazioni Office Windows


Topic correlati a "vba word: minimizzare foglio e lasciare userform":


Chi c’è in linea

Visitano il forum: Nessuno e 96 ospiti