es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Extraer múltiples direcciones de correo electrónico de destinatarios desde Lotus Notes utilizando VBA.

Edité un código VBA que obtuve de internet para obtener la dirección de correo del destinatario y todas las direcciones de correo del campo CC. El código que se muestra a continuación solo muestra una dirección de correo electrónico, sin embargo, hay varios destinatarios. ¿Cómo puedo editar el programa a continuación para obtener todos los destinatarios de los campos SendTo y CopyTo?

“`vba
Public Sub Get_Notes_Email_Address()
Dim NSession As Object 'NotesSession
Dim NMailDb As Object 'NotesDatabase
Dim NDocs As Object 'NotesDocumentCollection
Dim NDoc As Object 'NotesDocument
Dim NNextDoc As Object 'NotesDocument
Dim NItem As Object 'NotesItem
Dim view As String
Dim vn As Integer
Dim filterText As String

filterText = "texto a buscar"

Set NSession = CreateObject("Notes.NotesSession")
'Set NMailDb = NSession.CurrentDatabase
Set NMailDb = NSession.getDatabase("<nombreservidor>", "<localización>")
'MsgBox NMailDb.AllEntries()

If Not NMailDb.IsOpen Then
NMailDb.OPENMAIL
End If

Set NDocs = NMailDb.AllDocuments

If filterText <> "" Then
NDocs.FTSEARCH filterText, 0
End If
'MsgBox NDocs.Count
Set NDoc = NDocs.GetFirstDocument
'MsgBox NDocs.GetFirstDocument

vn = 2
Do Until NDoc Is Nothing
Set NNextDoc = NDocs.GetNextDocument(NDoc)
Set NItem = NDoc.GETFIRSTITEM("Body")
If Not NItem Is Nothing Then

<pre><code> Cells(vn, 3) = NDoc.GETITEMVALUE("Subject")(0)
'MsgBox prompt:=NDoc.GETITEMVALUE("CopyTo")(0), Title:="CopyTo"
Cells(vn, 4) = NDoc.GETITEMVALUE("CopyTo")
'MsgBox prompt:=NDoc.GETITEMVALUE("SendTo")(0), Title:="SendTo"
Cells(vn, 5) = NDoc.GETITEMVALUE("SendTo")

End If
Set NDoc = NNextDoc
vn = vn + 1
</code></pre>

Loop
'restablecer todos los objetos a nulos
Set NMailDb = Nothing
Set NSession = Nothing
End Sub
“`</localización>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener todos los destinatarios de los campos SendTo y CopyTo, debes modificar el código de la siguiente manera:

    1. Agrega dos variables adicionales al inicio del código para almacenar la lista de destinatarios:
      Dim SendToRecipients As Variant
      Dim CopyToRecipients As Variant
      
    2. Cuando recuperes los campos SendTo y CopyTo a continuación, asigna los valores a estas variables en lugar de escribirlos directamente en la hoja de trabajo:
      SendToRecipients = NDoc.GETITEMVALUE("SendTo")
      CopyToRecipients = NDoc.GETITEMVALUE("CopyTo")
      
    3. Luego, modifica las líneas que escriben los destinatarios en la hoja de trabajo de la siguiente manera:
      Cells(vn, 4) = Join(CopyToRecipients, "; ")
      Cells(vn, 5) = Join(SendToRecipients, "; ")
      

      La función ‘Join()’ une el array de destinatarios en una cadena con un delimitador de tu elección ("; " en este caso) para que puedan ser escritos en la hoja de trabajo.

    Con estos cambios, el código modificado obtendrá todas las direcciones de correo electrónico tanto de los campos SendTo como CopyTo y las escribirá en la hoja de trabajo.

Comments are closed.