因爲這個問題是關於字符串操作,並且沒有任何與形狀爲方便起見,我將假設輸入字符串是在一個名爲str
變量和結果輸出到控制檯。必要時進行調整。
基本上有兩種方法。第一個使用內置功能InStr
在一個字符串和Left
和Mid
搜索來檢索部分字符串:
Dim firstWordLocation As Long
Dim secondWordLocation As Long
firstWordLocation = InStr(str, firstWord)
secondWordLocation = InStr(str, secondWord)
If firstWordLocation > 0 And secondWordLocation > 0 Then
Debug.Print Left(str, firstWordLocation + Len(firstWord) - 1) & Mid(str, secondWordLocation)
End If
另一種方式來處理,這是使用正則表達式。它們功能更強大,可以以非常緊湊的方式執行復雜的字符串操作。 圖書館微軟VBScript中的正則表達式5.5提供RegExp
類可用於如下(見https://stackoverflow.com/a/22542835有詳細介紹):
Dim regex As New VBScript_RegExp_55.RegExp
regex.Pattern = "(.*?" & firstWord & ").*?(" & secondWord & ".*)"
Debug.Print regex.Replace(str, "$1$2")
這與第一和第二的內容替換輸入字符串在Pattern
括號中,因此省略之間的所有內容。 請注意,保留字符.*+?()[]{}^$\
必須在firstWord
或secondWord
中出現反斜槓\
。 如果輸入字符串中有換行符,則應該看看https://superuser.com/q/399381。
如果你想這個字符串放回形狀和使用VBA格式化的某些部分,你必須使用它代表的形狀各單個文本字符TextRange
的Character
財產。現在您可以使用這些角色對象來指定所需的格式。
請參閱https://msdn.microsoft.com/de-de/library/office/ff743845.aspx瞭解更多信息(儘管該文檔適用於PowerPoint,但我認爲它也適用於Word)。
您可以使用instr()來定位兩個關鍵詞的位置,然後使用Left(),Right()和/或Mid()的組合來將字符串分解成幾部分。然後使用連接運算符(&)將事物放回到一起,而忽略中間部分。查看這些函數的VBA文檔。 –