Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA : CreateObject("outlook.application")

7 réponses
Avatar
DCR
Bonjour,

Depuis Excel, je cherche à envoyer un email Outlook via du code VBA.

Mon code fonctionne correctement lorsque Outlook est ouvert. Lorsque Outlook
n'est pas ouvert j'ai un message d'erreur sur la ligne

Set OLMail = OLApp.CreateItem(0)

Le message d'erreur est le suivant : "Echec de l'opération".

Environnement : Windows XP; Excel 2003, Outlook 2003.

Trouvez ci après un extrait de ma fonction.

avez vous un tuyau ?

Merci

DCR

Public Function EnvoisMail() As Boolean
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
Dim bOutlookWasRunning As Boolean
'(...)
On Error GoTo Err
Err.Number = 0
On Error Resume Next
Set OLApp = GetObject(, "outlook.application")
bOutlookWasRunning = (Err.Number = 0)
On Error GoTo Err
If Not bOutlookWasRunning Then
Set OLApp = CreateObject("outlook.application")
End If
Set OLMail = OLApp.CreateItem(0)
'(...)
Exit Function
Err:
MsgBox (Err.Description)
End Function

7 réponses

Avatar
papou
Bonjour
Si tu n'utilises pas les références à Microsoft Outlook 11.0 Object Library,
il faut modifier :
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
par

Dim OLApp As Object
Dim OlMail As Object

Dans le cas contraire modifie :
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(olMailItem)

Cordialement
Pascal

"DCR" a écrit dans le message de news:

Bonjour,

Depuis Excel, je cherche à envoyer un email Outlook via du code VBA.

Mon code fonctionne correctement lorsque Outlook est ouvert. Lorsque
Outlook
n'est pas ouvert j'ai un message d'erreur sur la ligne

Set OLMail = OLApp.CreateItem(0)

Le message d'erreur est le suivant : "Echec de l'opération".

Environnement : Windows XP; Excel 2003, Outlook 2003.

Trouvez ci après un extrait de ma fonction.

avez vous un tuyau ?

Merci

DCR

Public Function EnvoisMail() As Boolean
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
Dim bOutlookWasRunning As Boolean
'(...)
On Error GoTo Err
Err.Number = 0
On Error Resume Next
Set OLApp = GetObject(, "outlook.application")
bOutlookWasRunning = (Err.Number = 0)
On Error GoTo Err
If Not bOutlookWasRunning Then
Set OLApp = CreateObject("outlook.application")
End If
Set OLMail = OLApp.CreateItem(0)
'(...)
Exit Function
Err:
MsgBox (Err.Description)
End Function


Avatar
DCR
Hélas, j'ai déjà essayé tout ca. En utilisant les références, sans les
utiliser... rien n'y fait. Ma fonction ne marche que si Outlook est déjà
ouvert...

A priori, bien qu'il n'y est pas d'erreur renvoyé, le programme n'exécute
pas correctement la commande New Outlook.Application (ni même
CreateObject("outlook.application")

Pour m'en assurer j'aimerai rendre Outlook visible après avoir créé mon
objet. Mais je ne sais pas comment faire non plus !




Bonjour
Si tu n'utilises pas les références à Microsoft Outlook 11.0 Object Library,
il faut modifier :
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
par

Dim OLApp As Object
Dim OlMail As Object

Dans le cas contraire modifie :
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(olMailItem)

Cordialement
Pascal

"DCR" a écrit dans le message de news:

Bonjour,

Depuis Excel, je cherche à envoyer un email Outlook via du code VBA.

Mon code fonctionne correctement lorsque Outlook est ouvert. Lorsque
Outlook
n'est pas ouvert j'ai un message d'erreur sur la ligne

Set OLMail = OLApp.CreateItem(0)

Le message d'erreur est le suivant : "Echec de l'opération".

Environnement : Windows XP; Excel 2003, Outlook 2003.

Trouvez ci après un extrait de ma fonction.

avez vous un tuyau ?

Merci

DCR

Public Function EnvoisMail() As Boolean
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
Dim bOutlookWasRunning As Boolean
'(...)
On Error GoTo Err
Err.Number = 0
On Error Resume Next
Set OLApp = GetObject(, "outlook.application")
bOutlookWasRunning = (Err.Number = 0)
On Error GoTo Err
If Not bOutlookWasRunning Then
Set OLApp = CreateObject("outlook.application")
End If
Set OLMail = OLApp.CreateItem(0)
'(...)
Exit Function
Err:
MsgBox (Err.Description)
End Function







Avatar
papou
Re
Je n'avais pas remarqué que tu exécutes tout ça dans une fonction.
Quel est l'intérêt ?
As-tu essayé tout simplement de renommer ta procédure en sub ?

Cordialement
Pascal

"DCR" a écrit dans le message de news:

Hélas, j'ai déjà essayé tout ca. En utilisant les références, sans les
utiliser... rien n'y fait. Ma fonction ne marche que si Outlook est déjà
ouvert...

A priori, bien qu'il n'y est pas d'erreur renvoyé, le programme n'exécute
pas correctement la commande New Outlook.Application (ni même
CreateObject("outlook.application")

Pour m'en assurer j'aimerai rendre Outlook visible après avoir créé mon
objet. Mais je ne sais pas comment faire non plus !




Bonjour
Si tu n'utilises pas les références à Microsoft Outlook 11.0 Object
Library,
il faut modifier :
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
par

Dim OLApp As Object
Dim OlMail As Object

Dans le cas contraire modifie :
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(olMailItem)

Cordialement
Pascal

"DCR" a écrit dans le message de news:

Bonjour,

Depuis Excel, je cherche à envoyer un email Outlook via du code VBA.

Mon code fonctionne correctement lorsque Outlook est ouvert. Lorsque
Outlook
n'est pas ouvert j'ai un message d'erreur sur la ligne

Set OLMail = OLApp.CreateItem(0)

Le message d'erreur est le suivant : "Echec de l'opération".

Environnement : Windows XP; Excel 2003, Outlook 2003.

Trouvez ci après un extrait de ma fonction.

avez vous un tuyau ?

Merci

DCR

Public Function EnvoisMail() As Boolean
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
Dim bOutlookWasRunning As Boolean
'(...)
On Error GoTo Err
Err.Number = 0
On Error Resume Next
Set OLApp = GetObject(, "outlook.application")
bOutlookWasRunning = (Err.Number = 0)
On Error GoTo Err
If Not bOutlookWasRunning Then
Set OLApp = CreateObject("outlook.application")
End If
Set OLMail = OLApp.CreateItem(0)
'(...)
Exit Function
Err:
MsgBox (Err.Description)
End Function









Avatar
DCR
Je viens à l'instant de faire le test...

Pas mieux ! Je me demande si cela ne viens pas d'une stratégie de sécurité
implémenté au niveau du réseau de ma boite...

Mais j'ai trouvé une petite solution de contournement... C'est Assez crade,
mais ca marche !


Public Function EnvoisMail As Boolean
Dim OLApp As Object
Dim OLMail As Object
Dim bOutlookWasRunning As Boolean
Dim i As Long
On Error GoTo Err
Err.Number = 0
On Error Resume Next
Set OLApp = GetObject(, "outlook.application")
bOutlookWasRunning = (Err.Number = 0)
On Error GoTo Err
If Not bOutlookWasRunning Then
Set OLApp = CreateObject("outlook.application")
End If
Set OLMail = OLApp.CreateItem(0)
Mail:
On Error GoTo Err
'(...)
EnvoisMail = True
Fin:
Set OLMail = Nothing
Set OLApp = Nothing
Exit Function
Err:
If Err.Number = -2079129597 Then
GoTo ForceOuvertureOutlook
Else
GoTo ErrOutlook
End If
ForceOuvertureOutlook:
On Error GoTo ErrOutlook
Shell "C:Program FilesMicrosoft OfficeOFFICE11OUTLOOK.EXE"
ForceGetOutlook:
On Error GoTo ErreurMail
Set OLApp = GetObject(, "outlook.application")
GoTo Mail
ErreurMail:
If Err.Number = 429 Then
DoEvents
Resume
End If
ErrOutlook:
EnvoisMail = False
GoTo Fin
End Function






Re
Je n'avais pas remarqué que tu exécutes tout ça dans une fonction.
Quel est l'intérêt ?
As-tu essayé tout simplement de renommer ta procédure en sub ?

Cordialement
Pascal

"DCR" a écrit dans le message de news:

Hélas, j'ai déjà essayé tout ca. En utilisant les références, sans les
utiliser... rien n'y fait. Ma fonction ne marche que si Outlook est déjà
ouvert...

A priori, bien qu'il n'y est pas d'erreur renvoyé, le programme n'exécute
pas correctement la commande New Outlook.Application (ni même
CreateObject("outlook.application")

Pour m'en assurer j'aimerai rendre Outlook visible après avoir créé mon
objet. Mais je ne sais pas comment faire non plus !




Bonjour
Si tu n'utilises pas les références à Microsoft Outlook 11.0 Object
Library,
il faut modifier :
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
par

Dim OLApp As Object
Dim OlMail As Object

Dans le cas contraire modifie :
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(olMailItem)

Cordialement
Pascal

"DCR" a écrit dans le message de news:

Bonjour,

Depuis Excel, je cherche à envoyer un email Outlook via du code VBA.

Mon code fonctionne correctement lorsque Outlook est ouvert. Lorsque
Outlook
n'est pas ouvert j'ai un message d'erreur sur la ligne

Set OLMail = OLApp.CreateItem(0)

Le message d'erreur est le suivant : "Echec de l'opération".

Environnement : Windows XP; Excel 2003, Outlook 2003.

Trouvez ci après un extrait de ma fonction.

avez vous un tuyau ?

Merci

DCR

Public Function EnvoisMail() As Boolean
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
Dim bOutlookWasRunning As Boolean
'(...)
On Error GoTo Err
Err.Number = 0
On Error Resume Next
Set OLApp = GetObject(, "outlook.application")
bOutlookWasRunning = (Err.Number = 0)
On Error GoTo Err
If Not bOutlookWasRunning Then
Set OLApp = CreateObject("outlook.application")
End If
Set OLMail = OLApp.CreateItem(0)
'(...)
Exit Function
Err:
MsgBox (Err.Description)
End Function














Avatar
banjo
Bonjour,

J'essaie également de mon côté de faire la même chose. Dans mes recherches
sur différents sites, j'ai retrouvé cette même idée : "il faut utiliser les
références à Microsoft Outlook 11.0 Object Library". C'est sûrement une
question très bète, mais je ne comprends pas ce que cela veut dire. Comment
utilise-t-on ces références? Est-ce une déclaration particulière dans un
module? ou?
Merci de vos explications.

Banjo


Bonjour
Si tu n'utilises pas les références à Microsoft Outlook 11.0 Object Library,
il faut modifier :
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
par

Dim OLApp As Object
Dim OlMail As Object

Dans le cas contraire modifie :
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(olMailItem)

Cordialement
Pascal

"DCR" a écrit dans le message de news:

Bonjour,

Depuis Excel, je cherche à envoyer un email Outlook via du code VBA.

Mon code fonctionne correctement lorsque Outlook est ouvert. Lorsque
Outlook
n'est pas ouvert j'ai un message d'erreur sur la ligne

Set OLMail = OLApp.CreateItem(0)

Le message d'erreur est le suivant : "Echec de l'opération".

Environnement : Windows XP; Excel 2003, Outlook 2003.

Trouvez ci après un extrait de ma fonction.

avez vous un tuyau ?

Merci

DCR

Public Function EnvoisMail() As Boolean
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
Dim bOutlookWasRunning As Boolean
'(...)
On Error GoTo Err
Err.Number = 0
On Error Resume Next
Set OLApp = GetObject(, "outlook.application")
bOutlookWasRunning = (Err.Number = 0)
On Error GoTo Err
If Not bOutlookWasRunning Then
Set OLApp = CreateObject("outlook.application")
End If
Set OLMail = OLApp.CreateItem(0)
'(...)
Exit Function
Err:
MsgBox (Err.Description)
End Function







Avatar
RGI
Bonjour

Voir dans l'éditeur VBA

Outils / références

voir les références disponibles

salutations

RGI

Bonjour,

J'essaie également de mon côté de faire la même chose. Dans mes recherches
sur différents sites, j'ai retrouvé cette même idée : "il faut utiliser les
références à Microsoft Outlook 11.0 Object Library". C'est sûrement une
question très bète, mais je ne comprends pas ce que cela veut dire. Comment
utilise-t-on ces références? Est-ce une déclaration particulière dans un
module? ou?
Merci de vos explications.

Banjo


Bonjour
Si tu n'utilises pas les références à Microsoft Outlook 11.0 Object Library,
il faut modifier :
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
par

Dim OLApp As Object
Dim OlMail As Object

Dans le cas contraire modifie :
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(olMailItem)

Cordialement
Pascal

"DCR" a écrit dans le message de news:

Bonjour,

Depuis Excel, je cherche à envoyer un email Outlook via du code VBA.

Mon code fonctionne correctement lorsque Outlook est ouvert. Lorsque
Outlook
n'est pas ouvert j'ai un message d'erreur sur la ligne

Set OLMail = OLApp.CreateItem(0)

Le message d'erreur est le suivant : "Echec de l'opération".

Environnement : Windows XP; Excel 2003, Outlook 2003.

Trouvez ci après un extrait de ma fonction.

avez vous un tuyau ?

Merci

DCR

Public Function EnvoisMail() As Boolean
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
Dim bOutlookWasRunning As Boolean
'(...)
On Error GoTo Err
Err.Number = 0
On Error Resume Next
Set OLApp = GetObject(, "outlook.application")
bOutlookWasRunning = (Err.Number = 0)
On Error GoTo Err
If Not bOutlookWasRunning Then
Set OLApp = CreateObject("outlook.application")
End If
Set OLMail = OLApp.CreateItem(0)
'(...)
Exit Function
Err:
MsgBox (Err.Description)
End Function








Avatar
banjo
Bonjour RGI,

Et merci beaucoup.

Cordialement,

Banjo


Bonjour

Voir dans l'éditeur VBA

Outils / références

voir les références disponibles

salutations

RGI

Bonjour,

J'essaie également de mon côté de faire la même chose. Dans mes recherches
sur différents sites, j'ai retrouvé cette même idée : "il faut utiliser les
références à Microsoft Outlook 11.0 Object Library". C'est sûrement une
question très bète, mais je ne comprends pas ce que cela veut dire. Comment
utilise-t-on ces références? Est-ce une déclaration particulière dans un
module? ou?
Merci de vos explications.

Banjo


Bonjour
Si tu n'utilises pas les références à Microsoft Outlook 11.0 Object Library,
il faut modifier :
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
par

Dim OLApp As Object
Dim OlMail As Object

Dans le cas contraire modifie :
Set OLApp = New Outlook.Application
Set OLMail = OLApp.CreateItem(olMailItem)

Cordialement
Pascal

"DCR" a écrit dans le message de news:

Bonjour,

Depuis Excel, je cherche à envoyer un email Outlook via du code VBA.

Mon code fonctionne correctement lorsque Outlook est ouvert. Lorsque
Outlook
n'est pas ouvert j'ai un message d'erreur sur la ligne

Set OLMail = OLApp.CreateItem(0)

Le message d'erreur est le suivant : "Echec de l'opération".

Environnement : Windows XP; Excel 2003, Outlook 2003.

Trouvez ci après un extrait de ma fonction.

avez vous un tuyau ?

Merci

DCR

Public Function EnvoisMail() As Boolean
Dim OLApp As Outlook.Application
Dim OLMail As Outlook.MailItem
Dim bOutlookWasRunning As Boolean
'(...)
On Error GoTo Err
Err.Number = 0
On Error Resume Next
Set OLApp = GetObject(, "outlook.application")
bOutlookWasRunning = (Err.Number = 0)
On Error GoTo Err
If Not bOutlookWasRunning Then
Set OLApp = CreateObject("outlook.application")
End If
Set OLMail = OLApp.CreateItem(0)
'(...)
Exit Function
Err:
MsgBox (Err.Description)
End Function