【发布时间】:2017-02-14 19:33:36
【问题描述】:
我想选择特定电子邮件的正文,将其复制并粘贴到 Outlook 中。
我知道在电子表格中按 Ctrl + A 然后按 Ctrl + C 会更容易,但这是涉及报告自动化的更大过程的一部分。
Sub GetFromInbox()
Dim olApp As Outlook.Application
Dim olNs As Outlook.Namespace
Dim olFldr As Outlook.MAPIFolder
Dim olItms As Outlook.Items
Dim olMail As Variant
Dim i As Long
Set olApp = New Outlook.Application
Set olNs = olApp.GetNamespace(”MAPI”)
Set olFldr = olNs.GetDefaultFolder(olFolderInbox)
Set olItms = olFldr.Items
olItms.Sort “Subject”
i = 1
For Each olMail In olItms
If InStr(olMail.Subject, “Criteria") > 0 Then
ThisWorkbook.Sheets("YourSheet").Cells(i, 1).Value = outMail.Body
i = i + 1
End If
Next olMail
Set olFldr = Nothing
Set olNs = Nothing
Set olApp = Nothing
End Sub
我得到一个语法错误:
If InStr(olMail.Subject, “Criteria") > 0 Then
【问题讨论】:
-
InStr的第一个参数是起始位置。试试If InStr(1, olMail.Subject, “Criteria") > 0 Then -
@TonyDallimore 谢谢!错过了那部分!...我在下一行收到一个错误,说运行时错误 424 需要对象?抱歉,我在 VBA 中编码才 3 个月!
-
将 Option Explicit 放在模块的顶部。在工具 |选项 |编辑器选项卡 - “需要变量声明”。
-
你有
For Each olMail In olItms和outMail.Body。olMail和outMail必须相同。我同意尼丁;Option Explicit将帮助您在运行代码之前检测这些错误。 -
修正你的
" "引号,它们看起来不同