如何捕获列中的电子邮件主题行?
How to capture email subject lines in a column?
我有 Excel VBA 代码应该从我的 Lotus Notes 应用程序收件箱中获取主题行,然后将其复制到 Excel 中的一个列中。
好像是把主题填充到一个单元格里,然后覆盖了。
第二个问题是,循环进行到一半时出现错误
Type:mismatch
Sub Subject_Info()
Dim v As Object
Dim vn As Object
Dim e As Object
Dim doc As Object
Dim rtitem As Variant
Dim nit As Object
View = "$All"
Set NSession = CreateObject("Notes.NotesSession")
Set NMailDb = NSession.GetDatabase("", "")
If Not NMailDb.IsOpen Then
NMailDb.OPENMAIL
End If
Set v = NMailDb.GetView(View)
Set vn = v.CreateViewNav()
Set e = vn.GetFirstDocument()
Do While Not (e Is Nothing)
Set doc = e.Document
Set nit = doc.GetFirstItem("subject")
Lines = Split(nit.Text, vbCrLf)
Range("A:A").Resize(UBound(Lines) + 1, 1).Value = Application.WorksheetFunction.Transpose(Lines)
Set e = vn.GetNextDocument(e)
Loop
End Sub
背景:在 Notes 中,文档中的所有项目都没有固定的格式。一份文件可能包含“主题”项,而另一份文件不包含……但两份文件仍然完全有效。与关系数据库相比,这在基于文档的数据库中是正常的。
在您的情况下,对于不包含主题项的文档,您的代码行 Set nit = doc.GetFirstItem("subject")
将 return Nothing。然后下一行也将失败,因此您的“Lines”变量中没有有效数组。
您可以将代码包装在 If doc.HasItem("Subject") then
子句中。但这使它不必要地复杂化,因为已经有一种更适合的方法。
简单替换
Set nit = doc.GetFirstItem("subject")
Lines = Split(nit.Text, vbCrLf)
和
Lines = doc.GetItemValue("subject")
GetItemValue
始终 return 是一个数组,与项目的存在无关。如果没有项目,那么它 return 是一个包含一个空字符串元素的数组。
这应该可以解决您的“类型:不匹配”错误。
我有 Excel VBA 代码应该从我的 Lotus Notes 应用程序收件箱中获取主题行,然后将其复制到 Excel 中的一个列中。
好像是把主题填充到一个单元格里,然后覆盖了。
第二个问题是,循环进行到一半时出现错误
Type:mismatch
Sub Subject_Info()
Dim v As Object
Dim vn As Object
Dim e As Object
Dim doc As Object
Dim rtitem As Variant
Dim nit As Object
View = "$All"
Set NSession = CreateObject("Notes.NotesSession")
Set NMailDb = NSession.GetDatabase("", "")
If Not NMailDb.IsOpen Then
NMailDb.OPENMAIL
End If
Set v = NMailDb.GetView(View)
Set vn = v.CreateViewNav()
Set e = vn.GetFirstDocument()
Do While Not (e Is Nothing)
Set doc = e.Document
Set nit = doc.GetFirstItem("subject")
Lines = Split(nit.Text, vbCrLf)
Range("A:A").Resize(UBound(Lines) + 1, 1).Value = Application.WorksheetFunction.Transpose(Lines)
Set e = vn.GetNextDocument(e)
Loop
End Sub
背景:在 Notes 中,文档中的所有项目都没有固定的格式。一份文件可能包含“主题”项,而另一份文件不包含……但两份文件仍然完全有效。与关系数据库相比,这在基于文档的数据库中是正常的。
在您的情况下,对于不包含主题项的文档,您的代码行 Set nit = doc.GetFirstItem("subject")
将 return Nothing。然后下一行也将失败,因此您的“Lines”变量中没有有效数组。
您可以将代码包装在 If doc.HasItem("Subject") then
子句中。但这使它不必要地复杂化,因为已经有一种更适合的方法。
简单替换
Set nit = doc.GetFirstItem("subject")
Lines = Split(nit.Text, vbCrLf)
和
Lines = doc.GetItemValue("subject")
GetItemValue
始终 return 是一个数组,与项目的存在无关。如果没有项目,那么它 return 是一个包含一个空字符串元素的数组。
这应该可以解决您的“类型:不匹配”错误。