这没有经过优化,因此您可以更好地了解其工作原理。您可以轻松地将
InStr
函数放在一行中,但有点难以理解。
下面您可以看到,您首先找到短语“提取的材料来自”的位置,并在该位置添加27个字符(字符串的长度-1)。这给了我们想要开始提取的角色位置。
然后将此位置用作新的起点,找到下一个分号并将该位置保存在中
lngEnd
. 然后变换
str
仅提取所需的数据。
编辑
忘记了回路,我在保护
str公司
直到创建解析的字符串,然后将每个元素附加到变量。我变了
str公司
到
e.Range.Text
只处理当前尾注处理,避免截断前一尾注。
Sub TestEndNoteMsg()
Dim e As Endnote
Dim str As String
Dim lngStart As Long
Dim lngEnd As Long
For Each e In Selection.Endnotes
lngStart = InStr(1, e.Range.Text, "Extracted material is from ", 1) + 27
lngEnd = InStr(lngStart, e.Range.Text, ";", 1)
str = str & MID(e.Range.Text, lngStart, lngEnd - lngStart) & vbcrlf
Next e
MsgBox "This paragraph contains:" & vbcrlf & str
End Sub