在word文档中重读每个单词的更好方法



我是编程新手,但我正试图将现有脚本改编为MS Word 2010/2013插件,以在打开的文档中为每个拉丁单词添加正确的重音。

对于我作为字符串发送的任何非重音拉丁单词,脚本"doaccentate"返回一个重音单词。我只是需要帮助来更好地循环遍历所有单词,然后在到达最后一个单词时停止循环。我现在的方法有点傻…我在文档的末尾插入一个无意义的单词,然后循环,直到它被选中并重读。

也许有一个更好或更有效的方法来处理整个事情。

    Public Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
    Dim document As Word.Document
    document = Globals.ThisAddIn.Application.ActiveDocument
    Dim mySelection = document.Application.Selection
 'make sure cursor is at start of document
      document.Application.Selection.HomeKey(Unit:=Microsoft.Office.Interop.Word.WdUnits.wdStory)
    'insert fake word at end to stop the loop
    Dim range As Word.Range
    range = document.Range()
    range.InsertAfter(" documentendatoris")
    Do
        'use MS Word's wildcard to select the first individual word as trimmed string
        mySelection.Find.Text = "<*>"
        mySelection.Find.MatchWildcards = True
        mySelection.Find.Execute()
        'replace the selected word that has been found with its accented counterpart
        mySelection.Text = Accentuate.Accentuate.DoAccentuate(mySelection.Text)
    Loop Until mySelection.Text = "documentendatóris"
End Sub

嗯,我不知道这是否更有效,但你可以使用文档。内容范围。Words collection检查主故事范围内的所有单词

    document = Globals.ThisAddIn.Application.ActiveDocument
    Dim range As Word.Range
    range = document.Content
    Dim current As Integer
    current = 0
    Dim words As Word.Words
    words = range.Words
    Dim word As Word.Range
    Do
        current = current + 1
        If current < words.Count Then
            word = words(current)
            If word.Text.EndsWith(" ") Then
                word.Text = word.Text.Trim() + "'s "
                'replace the selected word that has been found with its accented counterpart
                'mySelection.Text = Accentuate.Accentuate.DoAccentuate(mySelection.Text)
            Else
                word.Text = word.Text.Trim() + "'s"
            End If
        End If
    Loop Until current = words.Count

相关内容

最新更新