Evernote et VBA – Episode 7
Dans l’épisode précédent de notre saga « Evernote et VBA« , nous avons créé des tags (mots-clefs). Dans cette suite, nous allons voir comment lister les tags existant dans 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 (vous aurez besoin du VBA présenté dans ces articles) :
- Evernote et VBA – Episode 1
- Evernote et VBA – Episode 2
- Evernote et VBA – Episode 3
- Evernote et VBA – Episode 4
- Evernote et VBA – Episode 5
- Evernote et VBA – Episode 6
Lister les tags
Comme il s’agit aujourd’hui d’un test d’affichage, nous n’allons pas faire appel à la classe EvernoteClient
des articles précédents. La procédure qui suit est donc indépendante, à reprendre dans un module standard (mais elle fait quand même appel aux constantes EN_UTILISATEUR
et EN_MOTDEPASSE
définies dans le premier article de la série). Voici le code :
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 54 55 56 57 58 59 60 61 62 63 |
' --- ' EVERNOTE - RECHERCHE DE TAGS ' --- ' Sub TagsListe() Dim en As enapiLib.Evernote Dim tag As enapiLib.tag Dim tags As enapiLib.tags Dim strTag As String ' Instance d'Evernote Set en = New enapiLib.Evernote ' Connexion en.Login EN_UTILISATEUR, EN_MOTDEPASSE, "" ' Obtenir un objet Tag à partir de son nom Debug.Print "RECHERCHE D'UN TAG PAR SON NOM" ' Tag acc strTag = "acc" Set tag = en.GetTagByName(strTag) If tag Is Nothing Then Debug.Print "Tag '" & strTag & "' introuvable." Else Debug.Print "Tag '" & strTag & "' trouvé : " & tag.Name End If ' Tag access strTag = "access" Set tag = en.GetTagByName(strTag) If tag Is Nothing Then Debug.Print "Tag '" & strTag & "' introuvable." Else Debug.Print "Tag '" & strTag & "' trouvé : " & tag.Name End If Debug.Print ' Obtenir une liste de tags à partir d'un critère Debug.Print "RECHERCHE D'UNE LISTE DE TAGS" strTag = "a" Set tags = en.GetMatchingTags(strTag, 100) Debug.Print "Tags démarrant par '" & strTag & "'" If tags.Count = 0 Then Debug.Print "Aucun tag." Else For Each tag In tags Debug.Print "> " & tag.Name Next End If Debug.Print ' Liste de tous les tags Debug.Print "LISTE DE TOUS LES TAGS" For Each tag In en.tags Debug.Print "> " & tag.Name Next ' On ferme ! Set tags = Nothing Set tag = Nothing Set en = Nothing End Sub |
Tester le code
- Faites apparaître la fenêtre Exécution (
Ctrl
+G
). - Positionnez votre curseur quelque part entre le
Sub
et leEnd Sub
du bloc ci-dessus. - Cliquez sur l’icône Exécuter Sub/UserForm.
- Vous obtenez quelque chose comme ceci dans la fenêtre Exécution :
Première partie du code : GetTagByName()
- Dans l’API VBA pour Evernote, les tags ne sont pas manipulés directement comme des chaînes de caractères (
String
), mais comme des objetsTag
(plus précisémentenapiLib.Tag
). - La première portion de code définit une variable chaîne
strTag
, et essaie d’obtenir l’objetTag
correspondant, s’il existe, grâce à la méthodeGetTagByName()
. On récupère soit un objetTag
existant, soit la valeurNothing
quand le tag n’a pas été trouvé. - Notez que la méthode
GetTagByName()
attend un nom exact, il ne s’agit pas d’un critère partiel. Dans mon cas, je n’ai pas de tag «acc
» dans mon Evernote, la recherche échoue. Mais avec un tag «access
« , ça fonctionne. - Vous noterez aussi que la recherche n’est pas dépendante des majuscules. La recherche sur «
access
» trouve bien le tag «Access
« .
Deuxième partie du code : GetMatchingTags()
- La deuxième partie du code utilise la méthode
GetMatchingTags()
pour extraire cette fois une liste de tags correspondant à un critère partiel. Ici : tous les tags démarrant par «a
« . Par « critère partiel », on entend : « début de tag » (une recherche sur «cc
» ne trouvera pas le tag «Access
« , notamment). - Le nombre qui suit le critère partiel (dans mon exemple :
100
) est le nombre maximum de tags devant être extraits. - La méthode
GetMatchingTags()
renvoie une collection (liste) de tags, ce qui est logique. Il s’agit cette fois de la classeenapiLib.Tags
. Une boucleFor Each
peut être utilisée pour afficher chaque instance deTag
contenue dans la collection. - Si vous passez une chaîne vide
""
àGetMatchingTags()
, vous obtenez la liste de tous vos tags.
Troisième partie du code : propriété Tags
- Si vous souhaitez obtenir la liste de tous les tags, vous pouvez utiliser la propriété
Tags
, couplée avec une boucleFor Each
. Ce sera plus pratique – et sans doute plus performant – que de lister tous les tags parGetMatchingTags()
. - Les tags ne sont pas nécessairement fournis par ordre alphabétique, comme vous le voyez sur la capture d’écran.