Problème de versions "Microsoft Outlook xx.x Object Library"
Bonjour à tous,
je travaille sur l'automatisation d'un tableau Excel à partir duquel je crée des documents Powerpoint que j'envoie par e-mail à une liste de destinataires définie.
J'ai donc activé les références "Microsoft Outlook 12.0 Object Library" et "Microsoft Powerpoint 12.0 Object Library" dans mes macros, et tout fonctionne à merveille... sur mon poste seulement !
Je suis en Office 2007 et la majorité des autres postes de ma boite sont en 2003 !
Le problème est que sur un poste en 2003, les Object Library sont en version 11.0, ce qui fait que j'ai un joli message d'erreur "Can't find project or library" lors de l'éxécution de mes macros...
Ce document Excel doit pouvoir être utilisé sur plusieurs postes : comment faire pour qu'il fonctionne sur toutes les versions d'Excel ?
Est-il possible, via une commande, de faire charger la librairie 11.0 si l'utilisateur est en 2003, et la 12.0 s'il est en 2007 ?
Merci d'avance pour vos précieuses réponses !
Bonjour,
essaie d'utiliser les déclarations tardives ( Late Binding ). Au lieu de déclarer une variable de type Outlook, déclare la de type object. Voici un exemple d'envoie de mail par automation Outlook sans déclarer de références à Outlook:
Sub UseOutlook(strTo As String, strCC As String, strNomFichier As String, strSujet As String, strTexte As String)
Dim MonOutlook As Object
Dim MonMessage As Object
Dim strNomClasseur As String
Set MonOutlook = CreateObject("Outlook.Application")
Set MonMessage = MonOutlook.CreateItem(0)
strNomClasseur = strNomFichier
On Error GoTo fin
Sheets(strNomFichier).Copy
ActiveWorkbook.SaveAs ("c:\" & strNomFichier & ".xls")
strNomFichier = ActiveWorkbook.FullName
MonMessage.To = strTo
MonMessage.CC = strCC
MonMessage.Attachments.Add strNomFichier
MonMessage.Subject = strSujet
MonMessage.Body = strTexte
MonMessage.Send
Workbooks(strNomClasseur).Close SaveChanges:=False
Kill (strNomFichier)
Set MonOutlook = Nothing
Exit Sub
fin:
MsgBox Err.Description
Select Case Err.Number
Case 9
MsgBox "La valeur de la feuille est invalide" + vbCr + vbCr + "Opération annulé", vbCritical
Case 1004, 287
MsgBox "Une erreur est survenue durant la procédure" + vbCr + vbCr + "Opération annulé", vbCritical
Workbooks(strNomClasseur).Close SaveChanges:=False
Kill (strNomFichier)
End Select
Set MonOutlook = Nothing
Set MonMessage = Nothing
End Subau lieu de dire:
dim MonOutlook as outlook.applicationtu peux faire
Dim MonOutlook As Object
...
Set MonOutlook = CreateObject("Outlook.Application")comme ça Excel va se servir de la bonne version de Outlook selon le poste.
Sinon tu peux utiliser
ThisWorkbook.VBProject.References.AddFromFileet
Application.Versionpour activer une référence selon la version. Il faut que tu spécifie l'Adresse de la référence quand tu utilise AddFromFile:
Public Sub ActiveRef()
'Active la référence à Outlook selon la version d'excel
Select Case Application.Version
Case "11.0"
Call Addref("c:\Program Files\Microsoft Office\OFFICE11\msoutl.olb")
'Case le no de version de 2007
'Call Addref("L'adresse du fichier")
End Select
End Sub
Sub Addref(AdresseRef As String)
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromFile AdresseRef
End SubMerci pour la réponse claire et précise, Math !
j'avais entre temps bidouillé sur les commandes "ThisWorkbook.VBProject.References.AddFromFile", cela fonctionnaint un peu mieux, mais cette fois-ci, l'erreur que j'obtenais était "Erreur Automation - Biliothèque non inscrite"...
J'ai suivi ton conseil et ai utilisé les déclarations tardives, tout fonctionne très bien maintenant !
Encore merci !