Macro Outlook qui lance une Macro Excel qui veut envoyer un mail = Bug
Hello, hello;
Tout est dans le titre...
J'explique mon process:
Tous les matins, en partant de chez moi, je m'envoie un mail avec mon Blackberry (Outlook est ouvert sur mon poste) dont l'objet est, disons, "Lance ma macro Now!"
Une regle de messagerie dit que je lance un script quand le sujet est "Lance ma macro Now!" (je suis pas sur que l'IT soit super content que potentiellement tout le monde peut avoir acces a mon poste par e-mail, mais c'est un autre probleme):
Le script outlook:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| Sub LaunM(myMtgReq As Outlook.MailItem)
Dim StrID, olNS
StrID = myMtgReq.EntryID
Set olNS = Application.GetNamespace("MAPI")
Dim MyMail As Outlook.MailItem
Set MyMail = olNS.GetItemFromID(StrID)
Dim appExcel As Excel.Application
Dim wbExcel As Excel.Workbook
Dim wsExcel As Excel.Worksheet
Dim MavarXL
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = True
Set wbExcel = appExcel.Workbooks.Open("C:\Fichier.xls")
wbExcel.Application.AddIns("Analysis ToolPak").Installed = False
wbExcel.Application.AddIns("Analysis ToolPak").Installed = True
wbExcel.Worksheets(3).Range("E14").Value = MyMail.Subject
Set wsExcel = wbExcel.Worksheets(1)
MavarXL = appExcel.Run("Fichier.xls" & "!MACRO")
End Sub |
J'ouvre donc Fichier.xls et lance la Macro MACRO. Jusque la tout va bien.
Cette MACRO va ouvrir tout un tas de fichiers pour a son tour lancer des macros.
Dans nombreux de ces fichiers, le resultat de la macro est envoye par e-mail (je me contente d'afficher l'email pour faire un check et ils sont lancer manuellement, de toute facon l'alerte outlook empeche le lancement automatique sauf en passant par le petit soft Redemption ou CDO qui a jamais marche chez moi, bref).
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| Sub SNDMail()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Dim source As Range
Dim OutApp As Outlook.Application
Dim OutMail As Outlook.MailItem
Range(Mail).Select
Set source = Selection
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
With OutMail
.To = "Moi"
.CC = ""
.BCC = ""
.Subject = "Mail" & Range("C4").Text
.HTMLBody = RangetoHTML
Application.Wait (Now() + 0.0001)
.Display
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub |
Parfois ca lance le mail, parfois pas (ca bugue)...
Au niveau de ca:
Code:
1 2
| Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem) |
Toujours sur les memes fichiers... Strange... Il va de soi que lance avec outlook qui a la main, ca marche a chaque fois (c'est a dire si je lance directement manuellement la macro excel qui va ouvrir mes fichiers, lancer les macros et afficher les mails, quand c'est outlook qui la lance - et donc qui ne rend la main que quand tout le process est termine - sur 4 fichiers ca bogue, les macros sont construites exactement de la meme maniere...)
Une idee?
Lameth