XL 2016 VBA : possible d'installer une ancienne bibliothèque

xtor

XLDnaute Nouveau
Bonjour à tous,

J'utilise EXCEL 2016, mais tous mes collègues n'ont pas encore cette version.
Lorsqu'ils utilisent ma macro, il y a un problème de bibliothèque manquante car j'ai coché dans mes références :
MICROSOFT OUTLOOK 16.0 Object Library alors que mes collègues ont une version 15.0 au plus.

Je suis bien parvenu en ouvrant sur chaque poste à adapter, mais les macros sont verrouillées pour les utilisateurs donc je dois intervenir personnellement.
Etant donné que mon fichier est utilisé par plusieurs dizaines de personnes et au niveau européen, existe-t-il un moyen de rajouter dans mon excel 2016 cette ancienne bibliothèque.

D'avance merci pour votre retour
Xtor
 

kiki29

XLDnaute Barbatruc
Salut, décocher la référence, dans un environnement hétérogène on développe en Early Binding puis on déploie en Late Binding, cela devrait éviter les conflits de versions de bibliothèques.

 

Pièces jointes

  • Early Late Binding.pdf
    38.6 KB · Affichages: 5
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Là, évidemment, il va falloir se résoudre à passer en liaisons tardives.
Ça implique d'utiliser l'objet à travers une variable déclarée As Object et de l'initialiser par un Set à ce que renverra un appel à la fonction CreateObject. Je ne puis vous en donner le modèle garanti fonctionnel, n'étant pas équipé d'Outlook de toute façon.
Mais quand vous aurez réussi, gardez vous bien d'en déduire que c'est mieux de faire comme ça pour n'importe quel type d'objet. La Scrrun.dll, notamment, est très stable sur tous les systèmes depuis des dizaines d'années et il vaut mieux cocher la référence Microsoft Scripting Runtime, tant pour l'utilisation de Dictionary (optimisation performance) que du FileSystemObject (assistance lors de la programmation).
 

xtor

XLDnaute Nouveau
J'ai déjà modifié les déclarations de variable, mais cela ne fonctionne toujours pas.
Voici la procédure d'envoi de mail (les autres variables étant déclarées et définies dans la macro principale.

Sub ENVOIMAIL()

Dim outlookDossier As Object 'avant As Outlook.MAPIFolder
Dim outlookMessage As Object 'avant As Outlook.MailItem


If vPays = "6460" Then

Set outlookDossier = GetObject("", "Outlook.Application").GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
Set outlookMessage = outlookDossier.Items.Add

With outlookMessage
.Display
.Subject = "PP " & vClient
.Recipients.Add vBoss
.Body = "PP voor akkoord "
.Attachments.Add vChemin + "\" + vClient + " PP " + vDatelim + ".pdf"
.Attachments.Add vChemin + "\" + vClient + " PH2-4 920 " + vDatelim & ".txt"
If vPH5 <> "non" Then
.Attachments.Add vChemin + "\" + vClient + " PH2-4-5 919 " + vDatelim & ".txt"
End If
If vArt <> "non" Then
.Attachments.Add vChemin + "\" + vClient + " ART-917 " + vDatelim & ".txt"
End If
.OriginatorDeliveryReportRequested = False
.ReadReceiptRequested = False
.Send
End With

Set outlookMessage = Nothing
Set outlookDossier = Nothing

End If

End Sub
 

kiki29

XLDnaute Barbatruc
Re, désolé mais n'ayant plus depuis des années Outlook mais Thunderbird .....

D'autre part pour ton code :

STP Insertion Code.png
 
Dernière édition: