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.

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top