excel - VBA - 即使匹配是收件箱中的第一封电子邮件,代码也需要 5 分钟以上的时间来搜索收件箱 - 我该如何加快速度?

标签 excel vba

此代码目前需要几分钟才能自行运行,即使电子邮件是收件箱中的最新电子邮件(即在匹配之前几乎不需要排序)。

Sub Info()

Application.DisplayAlerts = False

Dim [all sorts of stuff]

Set priorSaveFolder = y.Sheets([SHEET]).Range([LOOKUP])

'Find Mailbox to search for information
Set olApp = New Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set sharedemail = olNS.CreateRecipient("[MAILBOX]")
Set olfldr = olNS.GetSharedDefaultFolder(sharedemail, olFolderInbox)
Set folder = olfldr
Set myTasks = folder.Items.Restrict("[Subject]='AP Settlement'")
myTasks.Sort "[ReceivedTime]", False

'Search folder, save

For Each olMail In myTasks
    If olMail.Attachments.Count > 0 Then
        For Each objAtt In olMail.Attachments
            If InStr(objAtt.Filename, "MTTAX") Or InStr(objAtt.Filename, "mttax") Then
                objAtt.SaveAsFile priorSaveFolder & "MTTAX.html"
                Exit For
            End If
        Next objAtt
    End If
Next olMail

[MORE CODE BELOW THAT ISN'T TAKING FOREVER]

最佳答案

搜索继续为 Exit For仅应用于内部循环。Exit For再次退出外循环:

Dim foundFlag As Boolean

For Each olMail In myTasks
    If olMail.Attachments.count > 0 Then
        For Each objAtt In olMail.Attachments
            If InStr(objAtt.FileName, "MTTAX") Or InStr(objAtt.FileName, "mttax") Then
                objAtt.SaveAsFile priorSaveFolder & "MTTAX.html"
                
                foundFlag = True
                
                Exit For
                
            End If
        Next objAtt
    End If
    
    If foundFlag = True Then Exit For
    
Next olMail

关于excel - VBA - 即使匹配是收件箱中的第一封电子邮件,代码也需要 5 分钟以上的时间来搜索收件箱 - 我该如何加快速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66538198/

相关文章:

Excel VBA @SQL String filter 多个 LIKE 条件

excel - Excel VBA“自动化错误”由于2016年1月Office更新,可能是由MSCOMCTL.OCX(Microsoft Windows Common Controls 6.o(Service Pack 6)引起的

excel - 提取或选择单元格的前两个数字

java - 如何为使用 WorkbookFactory 创建的工作簿创建 CellStyle?

r - 使用 R 下载 Excel 文件

VBA On.Time() 背景检查与常规用法相结合

excel - 如何在最后一个值之前用逗号和 "and"拆分一系列值?

vba - 通过 VBA 在 Outlook 的内部浏览器中打开网站

vb.net - 使用 EPPLUS 如何将包含数字的单元格格式化为文本

python - 将货币对象更改为小数。使用小数实例