Evernote et VBA – Episode 4
Dans le dernier épisode, il était question de créer un classeur Evernote à partir de VBA. Suite logique, il ne nous reste plus qu’à inscrire une note dans ce classeur… ou dans n’importe quel classeur, d’ailleurs !.
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 :
Le code
Reprenez une nouvelle fois le module de classe EvernoteClient
des articles précédents. Ajoutez-y tout ceci :
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 64 |
' --- ' EVERNOTE - CREATION D'UNE NOTE ' --- ' Function CreerNote( _ ByVal strTitre As String, _ ByVal strContenu As String, _ Optional ByVal strClasseur As String = "") _ As Boolean ' Quelques variables Dim nb As enapiLib.Notebook Dim nt As enapiLib.note ' Instance d'Evernote If Not Me.Connecter() Then CreerNote = False Exit Function End If ' Obtenir le classeur, s'il a été spécifié If strClasseur <> "" Then Set nb = Me.ExtraireClasseur(strClasseur) End If If nb Is Nothing Then Set nb = Me.Evernote.DefaultNotebook End If ' Encapsuler le contenu de la note ' par les balises XML nécessaires strContenu = EnteteNote() & strContenu & PiedNote() ' On crée la note Set nt = Me.Evernote.CreateNote(strTitre, strContenu) nt.Notebook = nb CreerNote = (Err.Number = 0) ' Un peu de ménage... Set nt = Nothing Set nb = Nothing Exit Function NouvelleNoteErr: CreerNote = False Exit Function End Function ' --- ' EN-TETE DE NOTE ' --- ' Private Function EnteteNote() As String EnteteNote = "<?xml version=""1.0"" encoding=""UTF-8""?>" _ & "<!DOCTYPE en-note SYSTEM ""http://xml.evernote.com/pub/enml2.dtd"">" _ & "<en-note>" End Function ' --- ' PIED DE NOTE ' --- ' Private Function PiedNote() As String PiedNote = "</en-note>" End Function |
Explications
La méthode CreerNote()
doit recevoir 2 paramètres obligatoires, et un paramètre optionnel :
- Le premier paramètre est le titre de la note.
- Le second paramètre est le corps de la note (voir plus loin).
- Le troisième paramètre est le nom du classeur dans lequel créer la note. Si ce paramètre est omis, la note est créée dans le classeur Evernote par défaut.
Format des notes
Une « evernote » est créée dans un format XML qui doit respecter un certain nombre de balises. Ces balises sont un sous-ensemble des balises HTML, appelé « ENML » (EverNote Markup Language). La définition du format est disponible sous forme de DTD (Document Type Definition), à cette adresse (il vous faut un éditeur de texte pour lire cette DTD).
Comme il s’agit de XML, l’ensemble de la note doit démarrer par en-tête précis et se terminer par un pied précis. Pour simplifier la gestion, ces 2 parties sont gérées par des fonctions dédiées EnteteNote()
et PiedNote()
. Du coup, lorsque vous créerez une note à partir d’Access, vous n’aurez plus à fournir l’en-tête et le pied de note ; il suffira de renseigner le corps de la note.
Tester le code
Vous savez que les modules de classe ne peuvent pas être testés directement : il faut un bloc de code, dans un module standard, pour les « mettre en scène ». Par conséquent, créez (ou reprenez) un module standard, et recopiez-y ce bout de code, qui crée 2 notes, l’une dans le classeur par défaut, l’autre dans un classeur nommé :
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 |
' --- ' EVERNOTE - CREATION DE NOTES ' --- ' Sub TestEvernoteClient() Dim ec As EvernoteClient ' Une instance du client EvernoteNote Set ec = New EvernoteClient ' Identifiants ec.Utilisateur = EN_UTILISATEUR ec.MotDePasse = EN_MOTDEPASSE ' Création d'une note dans le classeur par défaut ec.CreerNote "Evernote, Hello World!", _ " Ceci est ma première evernote postée par Access..." ' Création d'une note dans un classeur précis ec.CreerNote "Evernote, note 2", _ "Et hop, une deuxième note !", _ "SelfAccess") ' On ferme ! Set ec = Nothing End Sub |
Le format ENML reprend un certain nombre de balises HTML. Si vous connaissez la mise en page Web, vous ne serez pas dépaysé ! Par exemple, pour obtenir une note avec du gras et de l’italique, vous écrirez :
1 2 |
ec.CreerNote "Evernote, note 3, _ "Voici une <b>evernote</b> avec de <i>l'italique</i>." |
Article très intéressant, mais je me demande s’il est possible d’attacher un document à la note via VBA
A priori, ça devrait être possible via la méthode
AddResource()
de l’objetNote
.