La creación de un único archivo de varias notas en Outlook VBA
-
10-10-2019 - |
Pregunta
En la actualidad, mi código VBA crea un archivo único para cada nota. He aquí algunos ejemplos de código simplificado:
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
En lugar de crear un archivo único para cada nota, quiero crear un solo archivo para todas las notas. Estoy buscando el método más eficiente para concatenar el contenido de estas notas y escribirlos en un solo archivo.
Para darle una idea de la cantidad de datos y el grado de eficiencia que debe ser, hay cientos de notas con un tamaño medio de 1024 caracteres.
Solución
Este código se abrirá un archivo de texto para la salida y escribir la hora de modificación y el cuerpo de cada nota en el archivo de texto. El archivo estará en la carpeta Mis documentos y será llamado AllNotesYYYYMMDD.txt. Es posible cambiar ese camino basado en el sistema operativo y donde realmente se desea que el archivo almacenado.
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