Evernote et VBA – Episode 5

Déjà la fin de notre semaine Evernote… Pour clôturer cette série d’articles, il est temps de revenir un peu à Access ! Dans cet article, il sera question de transmettre le contenu d’une table sous forme d’evernote.
Résumé des épisodes précédents
Tout ce qui suit dépend des articles précédents. Pensez à les consulter si vous passez pour la première fois par ici :
- Evernote et VBA – Episode 1
- Evernote et VBA – Episode 2
- Evernote et VBA – Episode 3
- Evernote et VBA – Episode 4
Le principe
On dispose d’une table simple, avec des personnes (Nom, Prénom, Email). L’objectif est de lister toutes les personnes de cette table dans une evernote.
Le code
Je suppose que votre base de données contient la classe EvernoteClient
qui a été décrite dans les précédents épisodes de la série. Aucun rajout n’est nécessaire sur cette classe, nous pouvons l’exploiter en l’état.
- Créez un module standard dans votre base de données.
- Recopiez-y la procédure suivante, puis exécutez-la. Vous devriez obtenir ceci dans le classeur par défaut de Evernote :
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
'--- ' ENVOI DE DONNEES ACCESS DANS EVERNOTE ' --- ' Sub Access2Evernote() Dim rst As DAO.Recordset Dim strNote As String Dim ec As EvernoteClient ' Début de la note strNote = "<h1>Liste des personnes</h1>" _ & "Voici la liste des <b>personnes à inviter</b> !" _ & "<ul>" ' Obtenir la liste des personnes à partir ' d'une table Access Set rst = CurrentDb.OpenRecordset("tbl Destinataires", dbOpenSnapshot) While Not rst.EOF ' Corps de la note strNote = strNote _ & StringFormat("<li>{0} {1} - <a href=""{2}"">{3}</a></li>", _ rst("Nom"), _ rst("Prénom"), _ rst("Email"), _ GetHyperlink(rst("Email"), mailto)) ' Personne suivante rst.MoveNext Wend ' Fin de la note strNote = strNote & "</ul>" ' Une instance du client EvernoteNote Set ec = New EvernoteClient ' Identifiants ec.Utilisateur = EN_UTILISATEUR ec.MotDePasse = EN_MOTDEPASSE ' Création de la note dans le ' classeur par défaut If ec.CreerNote("Access Personnes", strNote) Then MsgBox "Note créée !", vbInformation Else MsgBox "Impossible de créer la note !", vbExclamation End If ' On ferme ! rst.Close Set rst = Nothing Set ec = Nothing End Sub |
L’exemple de code ci-dessus fait appel à la bibliothèque DAO (Microsoft DAO Object Library). Cette bibliothèque doit être associée à votre base de données pour que le programme fonctionne.Pour plus de détails sur les références, consultez cette page.
Le code utilise également des fonctions VBA traitées dans des articles précédents : StringFormat() pour formater les chaînes plus clairement, et GetHyperlink() pour extraire les e-mails bruts d’un champ Lien hypertexte.
Explications
Voici les points importants à noter dans la procédure d’exemple :
- On utilise un Recordset DAO pour parcourir toute la table et obtenir les nom, prénom et e-mail de chaque personne. Ça, c’est pour la partie Access.
- Le corps de la note est créé au format ENML, par concaténation de portions de code HTML. Si vous avez suivi l’article précédent, on crée seulement le corps de la note (la classe
EvernoteClient
rajoute l’en-tête et le pied de note automatiquement).
- Le titre de la note est créé comme en HTML, par les balises
<h1></h1
>. - Le reste de la note est une liste de personnes (balises
<ul></ul
>) - Chaque personne est un élément de liste (balises
<li></li
>). - Chaque email est un lien
mailto:
(balise<a href="..."></a>
).
Ce qui équivaut à générer le corps de note ci-dessous :
1 2 3 4 5 6 7 8 9 10 11 |
<h1>Liste des personnes</h1> <ul> <li> Zeblouze Agathe - <a href="mailto:agathe.zeblouze@free.fr"> agathe.zeblouze@free.fr </a> </li> <li>...</li> </ul> |
Excellent- look forward to it!
Simon > Thanks for your feedback! And yes, it is possible to add tags to a note using code. I will write an article on this at the end of the week (I’m already working on a series of posts on data import that should end on friday).
Saturday will be fine for an Evernote article 🙂 Stay tuned!
Hervé, great articles- nobody else shows how to link to Evernote using VBA! One question- can you add tags using code? I have tried and failed but it looks like it should be possible.
A bientot
Simon