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 :
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 :
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
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 :
Option Explicit
Const MailTo As String = 'Toto@xld.com'
Const MailCC As String = '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 As String
Dim TheDay As Date
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
End With
Set OLApplication = Nothing
Set OLMail = Nothing
End Sub
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 :
Option Explicit
Sub ExcelVersionAnalysorForMSoutl()
Dim XLVersion As Byte
Dim OLLibraryPath As String
Dim LoadOutlookDLL As Boolean
Dim i As Byte
XLVersion = Val(Application.Version)
Select Case 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'
Case Else
MsgBox 'Arf !!! ils ont sorti une nouvelle version d'Office !!'
Exit Sub
End Select
With Application.VBE.ActiveVBProject.References
For i = 1 To .Count
If .Item(i).IsBroken = True Then
If .Item(i).Name = 'Oultlook' Then
.Remove .Item(i)
LoadOutlookDLL = True
Exit For
End If
End If
Next i
If LoadOutlookDLL = True Then .AddFromFile OLLibraryPath
End With
End Sub
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