如何提取 Word 宏中 window 标题中括号之间的文本?
How to extract text between parentheses in window caption in Word macro?
我有一个场景,我将有许多 Word 文档,其标题包含我希望提取和操作的括号内的文本。标题栏信息(与实际文档名称不同)如下所示:
Random-length 文本(姓氏,名字 MI)Random-length 文本
我已经尝试了 Left、Right 和 Mid 函数,但得到的结果好坏参半。 Mid 函数起作用的唯一方法是确定文本的确切位置和长度,但我的结果不一致。我似乎无法专注于 parens 之间的文本 - 不多也不少。
到目前为止,我取得的唯一成功是使用两个单独的宏,它们可以完美地获取右括号左侧的文本或左括号右侧的文本。如何一步获取所有文本?
这是我的两个 "working" 宏,FWIW:
Sub a1FullNameDiscardAfterRightParen()
'Discard text after right paren (including paren)
Dim strFullName As String
Dim BRP As Long 'ARP=after right paren
strFullName = ActiveDocument.ActiveWindow.Caption
ARP = InStr(strFullName, Chr(41))
If ARP > 0 Then
strFullName = Left(strFullName, ARP - 1)
End If
Selection.TypeText strFullName
End Sub
--------------------------------------------------------------------------------------
Sub a2FullNameDiscardBeforeLeftParen()
'Discard text before left paren (including paren)
Dim strFullName As String
Dim BLP As Long 'BLP=before left paren
strFullName = ActiveDocument.ActiveWindow.Caption
BLP = InStr(strFullName, Chr(41))
If BLP > 0 Then
strFullName = Right(strFullName, BLP - 1)
End If
Selection.TypeText strFullName
End Sub
无论如何,这是一个提取括号之间所有内容的代码。您想使用 mid() 函数。
Sub ExtractTextBetweenParenthesis()
Dim MyText As String
Dim OpenPosition As Integer
Dim closeposition As Integer
OpenPosition = InStr(ActiveDocument.ActiveWindow.Caption, "(")
closeposition = InStr(ActiveDocument.ActiveWindow.Caption, ")")
MyText = Mid(ActiveDocument.ActiveWindow.Caption, OpenPosition + 1, closeposition - OpenPosition - 1)
Selection.TypeText MyText
End Sub
我有一个场景,我将有许多 Word 文档,其标题包含我希望提取和操作的括号内的文本。标题栏信息(与实际文档名称不同)如下所示:
Random-length 文本(姓氏,名字 MI)Random-length 文本
我已经尝试了 Left、Right 和 Mid 函数,但得到的结果好坏参半。 Mid 函数起作用的唯一方法是确定文本的确切位置和长度,但我的结果不一致。我似乎无法专注于 parens 之间的文本 - 不多也不少。
到目前为止,我取得的唯一成功是使用两个单独的宏,它们可以完美地获取右括号左侧的文本或左括号右侧的文本。如何一步获取所有文本?
这是我的两个 "working" 宏,FWIW:
Sub a1FullNameDiscardAfterRightParen()
'Discard text after right paren (including paren)
Dim strFullName As String
Dim BRP As Long 'ARP=after right paren
strFullName = ActiveDocument.ActiveWindow.Caption
ARP = InStr(strFullName, Chr(41))
If ARP > 0 Then
strFullName = Left(strFullName, ARP - 1)
End If
Selection.TypeText strFullName
End Sub
--------------------------------------------------------------------------------------
Sub a2FullNameDiscardBeforeLeftParen()
'Discard text before left paren (including paren)
Dim strFullName As String
Dim BLP As Long 'BLP=before left paren
strFullName = ActiveDocument.ActiveWindow.Caption
BLP = InStr(strFullName, Chr(41))
If BLP > 0 Then
strFullName = Right(strFullName, BLP - 1)
End If
Selection.TypeText strFullName
End Sub
无论如何,这是一个提取括号之间所有内容的代码。您想使用 mid() 函数。
Sub ExtractTextBetweenParenthesis()
Dim MyText As String
Dim OpenPosition As Integer
Dim closeposition As Integer
OpenPosition = InStr(ActiveDocument.ActiveWindow.Caption, "(")
closeposition = InStr(ActiveDocument.ActiveWindow.Caption, ")")
MyText = Mid(ActiveDocument.ActiveWindow.Caption, OpenPosition + 1, closeposition - OpenPosition - 1)
Selection.TypeText MyText
End Sub