微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

VBA WORD循环遍历句子和语句行

如何解决VBA WORD循环遍历句子和语句行

那有可能吗?

编辑:解释我的自我,并以另一种方式思考

我可以循环显示低谷的字母,单词和段落,但不认为应该是句子,也找不到行的引用。

作为一幅价值一千个单词的图像,我附上一张图片以说明自己:

  • 以黑色为正方形的文字示例
  • 以绿色表示我在使用波纹管后获得的成功
  • 红色方框,我该怎么办

example of sentences coloured as mention,image as link as it is my first post

我的目的是突出显示/标记/上色不适合单个页面宽度的行,例如以黄色正方形显示。但是不确定如果我无法实现轻松的任务该怎么办。

有帮助吗? (在这里和其他地方搜索了几个小时都没有成功)

If False Then   ' Cool,letter by letter
    With ActiveDocument
                     For i = 1 To .Characters.Count
                                  .Characters(i).Font.Color = Int(Rnd * 1048576)
                            Next
                    End With
    End If
                       
                    
                    
If False Then  ' Cool,word by word
    With ActiveDocument
                     For i = 1 To .Words.Count
                                  .Words(i).Font.Color = Int(Rnd * 1048576)
                            Next
                    End With
    End If



If False Then  ' :-(  same as paragraph
    With ActiveDocument
                     For i = 1 To .Sentences.Count
                                  .Sentences(i).Font.Color = Int(Rnd * 1048576)
                             Next
                  End With
   End If
    

If True Then ' Cool,paragraph by paragraph
    With ActiveDocument
                     For i = 1 To .Paragraphs.Count
                                  .Paragraphs(i).Range.Sentences(1).Font.Color = Int(Rnd * 1048576)
                             Next
                   End With
    End If

注意+添加:解释我的自我,并以另一种方式思考

作为一个稳定的人,我向自己解释说,总体目的ID是用来识别“不适合一个打印行的文本行”。如果感兴趣的话,这与写作诗歌有关。 我想我也可以尝试在打印线上“定位每个字符”,识别“行刹车”字符(Word不考虑刹车),并手动逐个单词/逐个字母上色。 但是我在字符对象上都找不到,该属性指向打印视图中的位置。

解决方法

可能有可能进行优化,但这有效!!,(感谢John Korchok)

For Each p In ActiveDocument.Paragraphs
    first_word_of_paragraph = True
    
    For Each w In p.Range.Words
        If first_word_of_paragraph = True Then
            first_word_of_paragraph = False
            actual_line_vertical_start = w.Information(wdVerticalPositionRelativeToPage)
            End If
        
        If first_word_of_sentence = True Then
            first_word_of_sentence = False
            actual_line_vertical_start = w.Information(wdVerticalPositionRelativeToPage)
            End If
            
        If w.Text = "" Then
            first_word_of_sentence = True
            End If
            
        If actual_line_vertical_start <> w.Information(wdVerticalPositionRelativeToPage) Then
            w.HighlightColorIndex = wdRed
            End If

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。