“合同”选择(扩展/扩展的对面)?

时间:2016-03-16 18:49:57

标签: ms-word word-vba

我正在研究一个宏,它将扫描我的文档中的一个单词(用户输入)。当找到该单词时,将该段添加到变量中。然后检查变量中的第一个“单词”,看看它是否是罗马数字。如果它是罗马数字,我想将选择减少到最后的第二个单词。

在Excel中,我会使用“Mid”或“Right”之类的内容来获取“x”的文本。或“我”。

然而,我仍然坚持如何“调整”单词选择。我搜索过,但大多数都在Excel中找到帮助。

以下是由两部分组成的代码:

Sub Find_Definitions()
Dim myDoc As Word.Document
Dim oRng As Word.Range, rng As Word.Range
Dim addDefinition$, findText$, editedDefinition$
Set myDoc = ActiveDocument

findText = InputBox("What term would you like to search for?")
If findText = "" Then Exit Sub

'Loop through the document
Set oRng = myDoc.Content

With oRng.Find
    .ClearFormatting
    .Text = findText
    .MatchCase = False
    .Wrap = wdFindContinue
    While .Execute
        Set rng = oRng.Paragraphs(1).Range
        rng.Select
       ' Here's where I could check the text, and see if it starts with Roman numerals.
        editedDefinition = Check_For_Roman_Numerals(rng)

    Wend 'end .execute
End With 'oRng.find

End Sub

这是我正在努力工作的代码:

Private Function Check_For_Roman_Numerals(ByVal mySelection As Word.Range) As Range
Dim romanNumerals() As Variant
Dim firstWord$, paragraphsText As Variant, xWord As Variant
Dim oWord As Word.Range
Dim i&
romanNumerals = Array("i", "ii", "iii", "iv", "v", "vi", "vii", "viii", "ix", "x", "xi", "xii")
Dim editedSelection$
editedSelection = mySelection.Text

With mySelection
    Debug.Print mySelection.Text
        For i = LBound(romanNumerals) To UBound(romanNumerals)
            If (mySelection.Words(1) = romanNumerals(i)) Or (mySelection.Words(1) = romanNumerals(i) & ".") Then
                'I get a TYPE MISMATCH Error on the next line, highlighting 'MoveStart'
                Set Check_For_Roman_Numerals = mySelection.MoveStart(unit:=wdWord, Count:=1)
                Debug.Print Check_For_Roman_Numerals
                Debug.Print mySelection.Text
                Exit For
            End If
        Next i
End With 'mySelection

Set Check_For_Roman_Numerals = mySelection

End Function

感谢您提供任何帮助或提示。这个想法是第二个宏将在开始时返回没有“i。”或“ii。”或“x。”等的文本。否则,请返回原始文本。

编辑:我想我也可以尝试将rng减少一个词,但不确定如何。

此外,我几乎可以得到我想要的内容,但 希望更改文档中的文字。如果我这样做,以下工作(代替我上面的错误行): mySelection.Words(1).Delete

我需要在单词文档中保留罗马数字,我只是想弄清楚如何删除它们(并且可能放入一个字符串),所以我可以添加非罗马数字文本到索引的entryentryautotext

0 个答案:

没有答案