Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ejemplo
En el siguiente Visual Basic para Aplicaciones (VBA) se busca en la Bandeja de
entrada elementos con asunto igual a Test y se muestran los nombres de los
remitentes de los elementos de correo electrónico devueltos por la búsqueda. El
procedimiento de evento AdvancedSearchComplete establece el
booleano blnSearchComp en True cuando finaliza la búsqueda. Esta variable
booleana es utilizada por el procedimiento TestAdvancedSearchComplete() para
determinar cuándo finaliza la búsqueda. El código de ejemplo debe ubicarse en
un módulo de clase como ThisOutlookSessiony, a continuación, se debe llamar al
procedimiento de TestAdvancedSearchComplete() antes de que se puede llamar al
procedimiento de evento por Outlook.
VBCopiar
Public blnSearchComp As Boolean
End Sub
Sub TestAdvancedSearchComplete()
Dim sch As Outlook.Search
Dim rsts As Outlook.Results
Dim i As Integer
blnSearchComp = False
Const strF As String = "urn:schemas:mailheader:subject = 'Test'"
Const strS As String = "Inbox"
Set sch = Application.AdvancedSearch(strS, strF, "Test")
While blnSearchComp = False
DoEvents
Wend
Set rsts = sch.Results
For i = 1 To rsts.Count
Debug.Print rsts.Item(i).SenderName
Next
End Sub
VBCopiar
Public m_SearchComplete As Boolean
Sub TestSearchForMultipleFolders()
Dim Scope As String
Dim Filter As String
Dim MySearch As Outlook.Search
Dim MyTable As Outlook.Table
Dim nextRow As Outlook.Row
m_SearchComplete = False
'Establish scope for multiple folders
Scope = "'" & Application.Session.GetDefaultFolder( _
olFolderInbox).FolderPath _
& "','" & Application.Session.GetDefaultFolder( _
olFolderSentMail).FolderPath & "'"
'Establish filter
If Application.Session.DefaultStore.IsInstantSearchEnabled Then
Filter = Chr(34) & "urn:schemas:httpmail:subject" _
& Chr(34) & " ci_phrasematch 'Office'"
Else
Filter = Chr(34) & "urn:schemas:httpmail:subject" _
& Chr(34) & " like '%Office%'"
End If
Set MySearch = Application.AdvancedSearch( _
Scope, Filter, True, "MySearch")
While m_SearchComplete <> True
DoEvents
Wend
Set MyTable = MySearch.GetTable
Do Until MyTable.EndOfTable
Set nextRow = MyTable.GetNextRow()
Debug.Print nextRow("Subject")
Loop
End Sub
vba - Buscar el correo electrónico de Outlook (y responderlo) usando Excel VBA -
WebMonkez.com
2
Verity 10 mar. 2016 a las 02:13
Para revisar todas las carpetas, haga esto: Revise una vez todas las carpetas principales en
Outlook y luego, para cada carpeta principal, revise cada subcarpeta. Si tiene más ramas, se
supone que debe agregar más niveles al código "para cada Folder3 en folder2.folders".
También en la cláusula if puedes probar la fecha del correo y pasar de la más nueva a la más
antigua. Configure oMsg.display para ver qué correo se está revisando
Public Sub FORWARD_Mail_STAT_IN()
Dim Session As Outlook.NameSpace
Dim oOutLookObject As New Outlook.Application
Dim olNameSpace As NameSpace
Dim oItem As Object
Dim oMsg As Object
Dim searchkey As String
xxx = Folder.Name
For Each Folder2 In Folder.Folders 'all the subfolders from a main folder
yyy = Folder2.Name
Set oFolder = olNameSpace.Folders(xxx).Folders(yyy) 'in each folder we search all
the emails