簡體   English   中英

刪除形狀對象vba字中兩個字符串之間的文本

[英]delete text between two string in shape object vba word

我有形狀對象,我想以任何方式刪除兩個字符串之間的文本。 例如:

Dim oRang As RangeSet oRang = ActiveDocument.Shapes(1).TextFrame.TextRange
Const firstWord = "father"
const secondWord = "mother"

我在oRang有文字:“父親ajgfhdgh aghdashdgsgh sdfyghudsdghkshgfy dgvssdfhyv gdfysdfv gfdsdfv mother”。

我想刪除父母之間的所有單詞。 我怎樣才能做到這一點?

謝謝,

塔爾

由於這個問題是關於字符串操作的,並且為方便起見與形狀沒有任何關系,我將假設輸入字符串位於一個名為str的變量中,並將結果輸出到控制台。 根據需要調整。

基本上有兩種方法。 第一個使用內置函數 InStr搜索字符串,使用LeftMid來檢索字符串的一部分:

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

另一種方法是使用正則表達式 它們功能更強大,可以以非常緊湊的方式執行復雜的字符串操作。 Microsoft VBScript Regular Expressions 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第一個和第二個括號的內容,因此省略其間的所有內容。 請注意保留字符.*+?()[]{}^$\\必須使用反斜杠\\進行轉義,如果它們應出現在firstWordsecondWord 如果輸入字符串中有換行符,請查看https://superuser.com/q/399381


如果要將此字符串放回形狀並使用VBA格式化其某些部分,則必須使用TextRangeCharacter屬性來表示形狀中的每個單個文本字符。 現在,您可以使用這些字符對象分配所需的格式。

有關詳細信息,請參閱https://msdn.microsoft.com/de-de/library/office/ff743845.aspx (盡管該文檔適用於PowerPoint,但我認為它也適用於Word)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM