Pessoal, boa tarde!
Estou precisando da ajuda dos senhores, tenho o código abaixo que move os emails entre pastas do outlook conforme a categorizacao no sistema pelos usuários.
O código está funcionando em 3 computadores difetentes, mas quando tento rodar em um outro computador ele não roda até o final.
Alguém poderia me ajudar???
Estou precisando da ajuda dos senhores, tenho o código abaixo que move os emails entre pastas do outlook conforme a categorizacao no sistema pelos usuários.
O código está funcionando em 3 computadores difetentes, mas quando tento rodar em um outro computador ele não roda até o final.
Alguém poderia me ajudar???
- Código:
Public Function MoverEmails()
Dim dbBase As DAO.Database
Dim myBase As DAO.Recordset
Dim vSQL As String: vSQL = "SELECT tbBase.Chave, tbBase.De, tbBase.Assunto, tbBase.[Assunto normalizado],tbBase.[Conteúdos], tbBase.Criado, tbBase.Categoria, tbBase.Chave2 " _
& "From tbBase " _
& "WHERE (((tbBase.Categoria) Like 'ARQUIVAR' Or (tbBase.Categoria) Like 'DESCARTAR' Or (tbBase.Categoria) Like 'RETORNO' Or (tbBase.Categoria) Like 'CÓPIA' Or (tbBase.Categoria) Like 'INTERNO'));"
Set dbBase = CurrentDb
Set myBase = CurrentDb.OpenRecordset(vSQL)
Do While Not myBase.EOF
Dim myOlApp As New Outlook.Application
Dim myNamespace As Outlook.NameSpace
Dim myInbox As Outlook.Folder
Dim myDestFolderArquivados, myDestFolderDescartados, myDestFolderRetornos, myDestFolderInternos As Outlook.Folder
Dim myItems As Outlook.Items
Dim myRestrictItems As Outlook.Items
Dim myItem As Outlook.MailItem
Dim rotina, x, i As Integer
Dim chavepesquisa, chaveemail As String
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox).Folders("SAJ").Folders("1_INPUTS")
Set myItems = myInbox.Items
Set myDestFolderArquivados = myNamespace.GetDefaultFolder(olFolderInbox).Folders("SAJ").Folders("ARQUIVADOS") 'myInbox.Folders("Importados")
Set myDestFolderDescartados = myNamespace.GetDefaultFolder(olFolderInbox).Folders("SAJ").Folders("DESCARTADOS") 'myInbox.Folders("Importados")
Set myDestFolderRetornos = myNamespace.GetDefaultFolder(olFolderInbox).Folders("SAJ").Folders("2_RETORNOS")
Set myDestFolderInternos = myNamespace.GetDefaultFolder(olFolderInbox).Folders("SAJ").Folders("3_INTERNOS")
Set myItem = myItems.GetFirst
Set myRestrictItems = myItems.Restrict("[SenderName] = '" & myBase.Fields("De") & "'") ' Criterio pelo Remetente
If myRestrictItems.Count = 0 Then GoTo jump
For i = myRestrictItems.Count To 1 Step -1
chavepesquisa = myBase.Fields("Chave")
chaveemail = myRestrictItems(i).SenderName & Trim(Replace(myRestrictItems(i).Subject, "[External]", "")) & Left(myRestrictItems(i).body, 20)
If chavepesquisa = chaveemail Then
If myBase.Fields("Categoria") = "ARQUIVAR" Then
myRestrictItems(i).Move myDestFolderArquivados
ElseIf myBase.Fields("Categoria") = "CÓPIA" Then
myRestrictItems(i).Move myDestFolderDescartados
ElseIf myBase.Fields("Categoria") = "DESCARTAR" Then
myRestrictItems(i).Move myDestFolderDescartados
ElseIf myBase.Fields("Categoria") = "RETORNO" Then
myRestrictItems(i).Move myDestFolderRetornos
ElseIf myBase.Fields("Categoria") = "INTERNO" Then
myRestrictItems(i).Move myDestFolderInternos
End If
End If
Next
jump:
Set myItem = Nothing
Set myDestFolderArquivados = Nothing
Set myDestFolderDescartados = Nothing
Set myRestrictItems = Nothing
Set myItems = Nothing
Set myInbox = Nothing
Set myNamespace = Nothing
myBase.MoveNext
Loop
myBase.Close
Set myBase = Nothing
dbBase.Close
Set dbBase = Nothing
MsgBox "E-mails movidos com sucesso!", vbOKOnly, " • SAJ - Operação Concluída!"
End Function