code pour savoir si outook express est ouvert
Le
pirot
Bonjour,
en vba excel bien sûr
Mon code envoi des courrriers avec outlook express (avec image dans le
texte), en nombre.
J'envoie des paquets de 20 adresses en copie cachée:
outlook express s'ouvre, intègre les adresses, le message, l'image,
envoie le courrier, puis se ferme.
(si tout se passe bien .)
squelette du code:
for paquet =1 to max
envoimail (avec les paramètres)
next i
cela fonctionne très bien, sauf si outlook express échoue (par exemple
pas de connexion internet)
dans ce cas, outlook reste ouvert sur la fenêtre d'erreur d'envoi.
et ensuite, c'est la cata avec vba.
Question:
comment savoir en VBA qu'outlook express est ouvert ?
(cela voudrait dire que la boucle doit s'arrêter, et informer
l'utilisateur que l'envoi a échoué
à l'envoi du paquet n° i.
merci de vos réponses
pierreL.
en vba excel bien sûr
Mon code envoi des courrriers avec outlook express (avec image dans le
texte), en nombre.
J'envoie des paquets de 20 adresses en copie cachée:
outlook express s'ouvre, intègre les adresses, le message, l'image,
envoie le courrier, puis se ferme.
(si tout se passe bien .)
squelette du code:
for paquet =1 to max
envoimail (avec les paramètres)
next i
cela fonctionne très bien, sauf si outlook express échoue (par exemple
pas de connexion internet)
dans ce cas, outlook reste ouvert sur la fenêtre d'erreur d'envoi.
et ensuite, c'est la cata avec vba.
Question:
comment savoir en VBA qu'outlook express est ouvert ?
(cela voudrait dire que la boucle doit s'arrêter, et informer
l'utilisateur que l'envoi a échoué
à l'envoi du paquet n° i.
merci de vos réponses
pierreL.

Poser une question


Mets ces lignes :
Set Appli = CreateObject("Outlook.Application")
If Appli.Explorers.Count > 0 Then
Ainsi :
Set Appli = CreateObject("Outlook.Application")
for paquet =1 to max
If Appli.Explorers.Count > 0 Then
Msgbox("Echec de transmission")
Exit For
End If
envoimail (avec les paramètres)
next i
En espérant que l'application Outlook ait le temps de se refermer avant
l'analyse de son ouverture à la boucle suivante
Si tel n'est pas le cas il faudra rajouter un tempo :
Application.Wait (Now + TimeValue("0:00:01")) pour 1 secondes
ainsi :
Set Appli = CreateObject("Outlook.Application")
for paquet =1 to max
If Appli.Explorers.Count > 0 Then
Msgbox("Echec de transmission")
Exit For
End If
envoimail (avec les paramètres)
Application.Wait (Now + TimeValue("0:00:01"))
next i
Soit scinder en 2 le code
Sub Vérification ()
Set Appli = CreateObject("Outlook.Application")
for paquet =1 to max
If Appli.Explorers.Count > 0 Then
Msgbox("Echec de transmission")
Exit For
End If
Call Envoi
next i
End Sub
Sub Envoi ()
envoimail (avec les paramètres)
End Sub
Celà devrait faire
Dis moi !!!!!
Merci à FFO pour cette réponse rapide
j'ai testé, malheur !!! cela ne fonctionne pas car :
**************************************************************
la ligne:
Set Appli = CreateObject("Outlook.Application") semble voir
outlook mais pas outlook express
puis:
If Appli.Explorers.Count > 0 Then
**************************************************************
Appli.Explorers.Count retourne 0 si outlook express est ouvert
mais retourne 1 si Outlook2003 est ouvert.
Or, j'utilise outlook express 6 (j'ai essayé de mettre outlook
express, ou msimn, mais erreur 429 à l'éxécution
Question: quelle est le nom à mettre en paramètres pour que outlook
express soit "vu" ? dans createobjet(" ????.application")
sinon, c'est vraiment ce que je cherche (j'ai une tempo de 1 minute en
2 envois, pour laisser à oe le temps de se fermer)
si tu as une solution ...
@+
pierreL.
Pas tester, je n'ai plus Outlook Express...
'------------------------------------
Sub test()
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'msimn.exe'")
For Each objProcess In colProcessList
MsgBox "Une erreur est survenue. Publication annulée."
'Si tu désires fermer l'exécutable...
'Enlève l'apostrophe devant la ligne suivante :
'objProcess.Terminate
Next
End Sub
'------------------------------------
"pirot"
Bonjour,
en vba excel bien sûr ...
Mon code envoi des courrriers avec outlook express (avec image dans le
texte), en nombre.
J'envoie des paquets de 20 adresses en copie cachée:
outlook express s'ouvre, intègre les adresses, le message, l'image,
envoie le courrier, puis se ferme.
(si tout se passe bien ....)
squelette du code:
for paquet =1 to max
envoimail (avec les paramètres)
next i
cela fonctionne très bien, sauf si outlook express échoue (par exemple
pas de connexion internet)
dans ce cas, outlook reste ouvert sur la fenêtre d'erreur d'envoi.
et ensuite, c'est la cata avec vba.
Question:
comment savoir en VBA qu'outlook express est ouvert ?
(cela voudrait dire que la boucle doit s'arrêter, et informer
l'utilisateur que l'envoi a échoué
à l'envoi du paquet n° i.
merci de vos réponses
pierreL.
Remplaces la ligne
Set Appli = CreateObject("Outlook.Application")
par
Set Appli = New Outlook.Application
et coches la référence Microsoft Outlook 11.0 Object Library
Refais des essais et dis moi !!!!!
tout fonctionne parfaitement:
- message affiché si outlook express est ouvert
- et oe fermé avec la ligne
objProcess.Terminate
-------------------------------------------------------------------------
D'autant plus intéressant que cela permet de tester et/ou fermer
n'importe quel service à condition d'en connaître le nom.
(j'ai testé avec plein d'applications !)
je le dis tout haut: MERCI !!!
@+
pierreL