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.

¿Fue útil?

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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top