GNT sans publicité, site mobile, fonctionnalitées exclusives...

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.
Lire les 10 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #21103221
Salut à toi

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 !!!!!
pirot
Le #21103581
Bonjour,
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.
michdenis
Le #21104071
Bonjour,

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.
FFO
Le #21104351
Rebonjour à toi

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 !!!!!
pirot
Le #21104551
Bonjour et ......Merci à Michdenis !!!

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
Publicité
Suivre les réponses
Poster une réponse
Anonyme