Discussione:
Riportare finestra Excel in primo piano
(troppo vecchio per rispondere)
Scossa
2009-08-23 11:56:38 UTC
Permalink
Ciao a tutti,

ho un piccolo, ma fastidioso quanto le zanzare, problema che si può
semplificare e riprodurre per prova così:

foglio excel con commandbutton che carica una userform:

'nel modulo del foglio
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub


La userform contiene un unico commandbutton che crea un e-mail vuota in
outlook la minimizza e segnala "OK" con un messagebox:


'nella userform
Private Sub CommandButton1_Click()

' nb: è necessario il riferimento a "Microsoft Outlook 11.0 Object
' Library" (Strumenti->riferimenti)

Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.Mailitem

Set OutlookApp = New Outlook.Application
Set MItem = OutlookApp.CreateItem(olMailItem)
With MItem
.Display
.Application.ActiveInspector.WindowState = olMinimized
End With
MsgBox "ok"
Unload Me

End Sub



Il problema è che, nonostante Excel sia in primo piano non è attivo (la
caption di Excel lampeggia) e la msgbox resta nascosta finchè non clicco
sul foglio.

Ho provato:
- a spostare l'istruzione unload me prima di msgbox

- a inserire le due seguenti istruzioni prima di msgbox
Excel.Application.WindowState = xlMinimized
Excel.Application.WindowState = xlMaximized

- a inserire l'istruzione Excel.Windows(1).Activate

e varie altri tentativi ma senza risolvere il problema.

Cosa mi sfugge?
Come posso attivare Excel e portare in automatico in primo piano la
msgbox?

Grazie.
--
Bye!

Scossa
r
2009-08-23 15:11:01 UTC
Permalink
Post by Scossa
Ciao a tutti,
ho un piccolo, ma fastidioso quanto le zanzare, problema che si può
'nel modulo del foglio
Private Sub CommandButton1_Click()
UserForm1.Show
End Sub
La userform contiene un unico commandbutton che crea un e-mail vuota in
'nella userform
Private Sub CommandButton1_Click()
' nb: è necessario il riferimento a "Microsoft Outlook 11.0 Object
' Library" (Strumenti->riferimenti)
Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.Mailitem
Set OutlookApp = New Outlook.Application
Set MItem = OutlookApp.CreateItem(olMailItem)
With MItem
.Display
.Application.ActiveInspector.WindowState = olMinimized
End With
MsgBox "ok"
Unload Me
End Sub
Il problema è che, nonostante Excel sia in primo piano non è attivo (la
caption di Excel lampeggia) e la msgbox resta nascosta finchè non clicco
sul foglio.
- a spostare l'istruzione unload me prima di msgbox
- a inserire le due seguenti istruzioni prima di msgbox
Excel.Application.WindowState = xlMinimized
Excel.Application.WindowState = xlMaximized
- a inserire l'istruzione Excel.Windows(1).Activate
e varie altri tentativi ma senza risolvere il problema.
Cosa mi sfugge?
Come posso attivare Excel e portare in automatico in primo piano la
msgbox?
prova così:
Private Sub CommandButton1_Click()

' nb: è necessario il riferimento a "Microsoft Outlook 11.0 Object
' Library" (Strumenti->riferimenti)

Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.Mailitem

Set OutlookApp = New Outlook.Application
Set MItem = OutlookApp.CreateItem(olMailItem)
With MItem
.Display
.Application.ActiveInspector.WindowState = olMinimized
End With
MsgBox "ok"
Unload Me
ThisWorkbook.Activate
End Sub

saluti
r
--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm

Il mio ultimo lavoro ..
http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-eccezioni-e-alternative.html
Scossa
2009-08-23 15:28:01 UTC
Permalink
Post by r
...
ThisWorkbook.Activate
Niente da fare :-(

Ho provato anche:
Excel.Windows(1).Activate
ThisWorkbook.Activate

ma non cambia nulla!

Non c'è modo di simulare il click sulla finestra o di richiamare
l'evento "UserForm_Click()" ?
Per esempio qualcosa di simile a
call UserForm_Click()

(che, per inciso, anche cambaindola da private a public genera errore
nel codice: "sub o function non definita")


Grazie ancora.
--
Bye!

Scossa
r
2009-08-24 09:11:01 UTC
Permalink
Post by Scossa
Post by r
...
ThisWorkbook.Activate
Niente da fare :-(
Excel.Windows(1).Activate
ThisWorkbook.Activate
ma non cambia nulla!
Non c'è modo di simulare il click sulla finestra o di richiamare
l'evento "UserForm_Click()" ?
Per esempio qualcosa di simile a
call UserForm_Click()
(che, per inciso, anche cambaindola da private a public genera errore
nel codice: "sub o function non definita")
il tuo codice di esempio fa ciò che desideri
forse non ci hai detto tutto.
Non riuscendo a simulare il tuo problema
lascio la parola ad altri.
ciao
r
--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm

Il mio ultimo lavoro ..
http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-eccezioni-e-alternative.html
r
2009-08-24 09:26:01 UTC
Permalink
Post by r
Post by Scossa
Post by r
...
ThisWorkbook.Activate
Niente da fare :-(
Excel.Windows(1).Activate
ThisWorkbook.Activate
ma non cambia nulla!
Non c'è modo di simulare il click sulla finestra o di richiamare
l'evento "UserForm_Click()" ?
Per esempio qualcosa di simile a
call UserForm_Click()
(che, per inciso, anche cambaindola da private a public genera errore
nel codice: "sub o function non definita")
il tuo codice di esempio fa ciò che desideri
forse non ci hai detto tutto.
Non riuscendo a simulare il tuo problema
lascio la parola ad altri.
ciao
r
ultimo tentativo:

VBA.AppActivate ThisWorkbook.Parent & " - " & ThisWorkbook.Name

saluti
r
--
Come e dove incollare il codice:
http://www.rondebruin.nl/code.htm

Il mio ultimo lavoro ..
http://excelvba.altervista.org/blog/index.php/Excel-VBA/UsedRange-eccezioni-e-alternative.html
Scossa
2009-08-24 09:39:04 UTC
Permalink
Post by r
VBA.AppActivate ThisWorkbook.Parent & " - " & ThisWorkbook.Name
GRANDE!!!! questo funziona!

Ti assicuro che senza questa istruzione non c'era verso di avere Excel
attivo senza cliccare sulla finestra!

Grazie davvero!

---
Bye!
Scossa
Scossa
2009-08-24 10:03:17 UTC
Permalink
Post by r
VBA.AppActivate ThisWorkbook.Parent & " - " & ThisWorkbook.Name
VBA.AppActivate Me.Name

mi permette di non chiudere la userform!

Questo il codice finale:

Private Sub CommandButton1_Click()
Dim OutlookApp As Outlook.Application
Dim MItem As Outlook.Mailitem


Set OutlookApp = New Outlook.Application
Set MItem = OutlookApp.CreateItem(olMailItem)
With MItem
.Display
.Application.ActiveInspector.WindowState = olMinimized
End With

VBA.AppActivate Me.Name

MsgBox "ok"
' altre istruzioni ....

Unload Me

End Sub


Grazie ancora!

---
Bye!

Scossa

Loading...