PDA

View Full Version : [VBA] Userform in primo piano


ajalro
31-03-2008, 12:53
voglio che un all'apertura di un file word, tale file non venga visualizzato, ma che venga invece visualizzata una userform che ci ho creato, per cui ho scritto

Private Sub Document_Open()
Application.WindowState = wdWindowStateMinimize
'minimizzo il word
UserForm1.Show
'carico la user
End Sub

quindi quando apro il file, vedo che velocemente viene caricato il foglio doc, poi viene minimizzato ed è visualizzata la userform.
a questo punto però la userform non è + l'oggetto attivo, me ne accorgo dalla barra del titolo, e perchè capita che altre finestre di programmi le si sovrappongano, ci devo far click perchè diventi attiva e venga in primo piano.

allora ho provato ad aggiungere a quel codice questa riga
userform1.setfocus o
windows("file in questione").activate
ipotizzando che fosse equivalente ad un mio click fisico sulla userform, ma non funziona, la user resta oggetto inattivo

Avete idee? Grazie

MarcoGG
01-04-2008, 10:13
a questo punto però la userform non è + l'oggetto attivo, me ne accorgo dalla barra del titolo, e perchè capita che altre finestre di programmi le si sovrappongano, ci devo far click perchè diventi attiva e venga in primo piano.


Se questo è il tuo problema, opinione mia, mi sa che non ne esci vivo.
Credo proprio che non si possa fare. La tua UserForm non è un'applicazione distinta, ma una form-figlia dell'Applicazione Office in esecuzione...
Sarà molto dura, come invece sarebbe possibile in VB6 ( e quindi niente Office ), passare l'Handle di quella finestra ad una routine che la mantenga sempre "on top"...
L'unica cosa che puoi fare è dare una gerarchia ( ZOrder ecc... ) alle UserForm di una stessa istanza Office, ma pretendere di abbassare Word, e lasciare una UserForm on top rispetto a programmi esterni lanciati in seguito mi pare un'impresa disperata...

Ovviamente sono molto curioso di conoscere l'improbabile soluzione, se qualcuno la posterà... Nulla è impossibile... ;)