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
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
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
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" ha scritto:
> "Scossa" ha scritto:
>
> > In article <C1BE0766-8777-491E...@microsoft.com>,
> > r...@discussions.microsoft.com says...
> > > prova così:
> > > ...
> > > 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")
>
> 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
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
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