Bonsoir à tous et toutes
Tiens me voilà dans un truc qui me fait perdre un certain temps, si ce n'est pas un temps certain !
Je résume, je peux travailler sous Office 2003 et Office 2002... Rien de bien fracassant...
J'ai un Programme qui fait ce genre de Chose :
Citation:
OptionExplicit
Const MailTo AsString = 'Toto@xld.com'
Const MailCC AsString = 'Zaza@xld.com; Titi@xld.com'
'================================================= ========================
' 'Need reference to Microsoft Outlook xx Objects Library
'
' 'C:\\Program Files\\Microsoft Office\\OfficeXX\\msoutl.olb
'================================================= ========================
Sub SendingDailyMail()
Dim OLApplication As Outlook.Application, OLMail As Outlook.MailItem
Dim Message AsString
Dim TheDay AsDate
TheDay = Date
Message = 'Good Morning,' & vbCrLf & vbCrLf & _
= = = This is an automatic generated email = = = & vbCrLf & vbCrLf & _
Please find enclosed the Report for Transactions for & Format(TheDay, 'DDDD') & _
' ' & Format(TheDay, 'DD/MM/YYYY') & vbCrLf & _
Best Regards & vbCrLf & '@+Thierry' & vbCrLf & vbCrLf
Set OLApplication = CreateObject('Outlook.Application')
Set OLMail = OLApplication.CreateItem(OLMailItem)
With OLMail
.To = MailTo
.CC = MailCC
.Importance = olImportanceNormal
.Subject = 'Daily Transactions Summary Reports (' & _
Format(TheDay, 'YYYY-MM-DD') & ')'
.Body = Message
.Attachments.Add 'I:\\MC_PROD\\Reports\\Daily\\Test1.xls'
.Attachments.Add 'I:\\MC_PROD\\Reports\\Daily\\Test1.pdf'
.Categories = 'Daily'
.OriginatorDeliveryReportRequested = True
.ReadReceiptRequested = True
'.Send '<<<<<<<<<<<<<<<TO SEND DIRECTLY
.Display '<<<<<<<<<<<<<TO SEE THE MAIL FIRST
EndWith
Set OLApplication = Nothing
Set OLMail = Nothing
EndSub
|
Jusque là rien de bien extraordinaire.... J'ai développé ceci sous Excel 2003...
Puis j'ai la bonne idée de faire des tests depuis un LapTop en réseau Wifi avec Office 2002 et Win XP Pro...
Paf !! la référence est manquante 'MISSING Microsoft Outlook 11.0 Objects Library...
Qu'à cela ne tienne je bascule manuellement sur la bonne référence (Microsoft Outlook 10.0 Objects Library) et je sauve mon Workbook, le ré-ouvre depuis ce LapTop, pas de soucis...
Je ré-ouvre depuis une autre machine avec Office 2003... Je fais tourner ma Sub 'SendingDailyMail'... No souci, je ferme, no souci, je ré-ouvre depuis 2002... No Souci...
Mais si jamais je sauve quand j'ai ce fichier sous 2003 et bien fini !! Ré_ouverture sous 2002
PAF !!! => MISSING Microsoft Outlook 11.0 Objects Library...
Cette satanée référence bascule vers la version la Plus haute à la sauvegarde et devient manquante sur une version Inférieure ensuite...
Donc à grand coup de renfort de Frédérique Sigonneau et Laurent Longre et tout ce que j'ai pu trouver sur le Net... j'ai écrit ceci :
Citation:
OptionExplicit
Sub ExcelVersionAnalysorForMSoutl()
Dim XLVersion AsByte
Dim OLLibraryPath AsString
Dim LoadOutlookDLL AsBoolean
Dim i AsByte
XLVersion = Val(Application.Version)
SelectCase XLVersion
Case 9
OLLibraryPath = 'C:\\PROGRAM FILES\\MICROSOFT OFFICE\\OFFICE\\msoutl9.olb'
Case 10
OLLibraryPath = 'C:\\Program Files\\Microsoft Office\\Office10\\msoutl.olb'
Case 11
OLLibraryPath = 'C:\\Program Files\\Microsoft Office\\OFFICE11\\msoutl.olb'
CaseElse
MsgBox 'Arf !!! ils ont sorti une nouvelle version d'Office !!'
ExitSub
EndSelect
With Application.VBE.ActiveVBProject.References
For i = 1 To .Count
If .Item(i).IsBroken = TrueThen
If .Item(i).Name = 'Oultlook' Then
.Remove .Item(i)
LoadOutlookDLL = True
ExitFor
EndIf
EndIf
Next i
If LoadOutlookDLL = TrueThen .AddFromFile OLLibraryPath
EndWith
EndSub
|
Et je pensais m'en sortir avec un lancement dans le WorkBook_Open...
Et re Paf !!! Non j'ai bien VBE qui voit cette référence 'IsBroken', mais du coup j'ai ce message très sympathique :
'Complie Error' => Can't find Project or Library'
sur la Ligne :
If .Item(i).IsBroken = True Then
Ceci quand il a bouclé sur le 'i' à la position de cette fameuse référence à Outlook (que j'ai pris soin de mettre en dernière position de Priorité dans les références utilisées...) Par conséquent, isBroken, ne me semble pas adéquate, si il lui faut la référence à la Dll... (olb ici)
Je m'amuse à ce petit jeu depuis 3 bonnes heures, et j'avoue que c'est assez énervant, surtout que j'ai beau essayer dans tous les sens, mais à chaque fois
Paf et
Re-Paf !!
Est-ce que quelqu'un s'est déjà sorti de ce genre de galère, ou bien dois-je faire stopper systématiquement le déploiement d'Office 2003 tant qu'il restera des 2002 en exploitation ?
Je vous remercie d'avance pour vos essais, remarques ou suggestions...
Bonne Soirée
@+Thierry