Création d'un fichier unique à partir de plusieurs notes dans Outlook VBA
-
10-10-2019 - |
Question
À l'heure actuelle, mon code VBA crée un fichier unique pour chaque note. Voici quelques exemples de code simplifié:
Sub saveNotes()
Set myNote = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderNotes)
For ibi = 1 To myNote.Items.Count
fname = myNote.Items(ibi).Subject
myNote.Items(ibi).SaveAs "C:\Temp\" & fname & ".txt", 0
Next
End Sub
Au lieu de créer un fichier unique pour chaque note, je veux créer un fichier unique pour toutes les notes. Je cherche la méthode la plus efficace pour concaténer le contenu de ces notes et les écrire dans un seul fichier.
Pour vous donner une idée de la quantité de données et la façon dont il devrait être efficace, il y a des centaines de notes avec une taille moyenne de 1024 caractères.
La solution
Ce code va ouvrir un fichier texte pour la sortie et écrire le temps modifié et le corps de chaque note dans le fichier texte. Le fichier sera dans votre dossier Mes documents et sera nommé AllNotesYYYYMMDD.txt. Vous pouvez changer cette voie en fonction de votre système d'exploitation et où vous voulez réellement le fichier stocké.
Sub SaveNotes()
Dim fNotes As MAPIFolder
Dim ni As NoteItem
Dim sFile As String
Dim lFile As Long
Set fNotes = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderNotes)
lFile = FreeFile
sFile = Environ$("USERPROFILE") & "\My Documents\AllNotes" & Format(Date, "yyyymmdd") & ".txt"
Open sFile For Output As lFile
For Each ni In fNotes.Items
Print #lFile, "Modified:" & vbTab & ni.LastModificationTime & vbNewLine & ni.Body
Print #lFile, "-------------------------------"
Next ni
Close lFile
End Sub