首页 > 解决方案 > 在字符之间插入换行符

问题描述

所以我试图在 MS Word 上格式化许多文本,这些文本来自一个网站。

问题是当我将它粘贴到 Word 时,不包括中断。所以,我有一个很大的段落,每个部分都卡住了。

我设法通过使用查找和替换功能将大部分部分分开,但仍然存在一个问题:

每次有一个小写字符直接后跟一个大写字符时,我需要在它们之间插入一个中断。

例如:玫瑰是红色的,紫罗兰是蓝色的。

我试图在 VBA 上编写一个宏,但它不起作用,并返回“错误 424:需要对象”。在这一点上,我已经很多年没有练习过任何 VBA,我迷路了。如果有人可以帮助我,那就太好了!

这是我写的:

 Dim doc As Word.Document
    Set doc = ActiveDocument
        
    
    Dim string1 As String
    Dim Char1 As String
    Dim Char2 As String
    
    With doc.Range
        With Selection.Find
         .Forward = True
         .Wrap = wdFindStop
         .MatchWildcards = True
         .Text = "[a-z][A-Z]"
         .Execute
            If Find.Found = 1 Then
              string1 = Selection.Text
              Char1 = Left(string1, 1)
              Char2 = Right(string1, 1)
              string1 = Char1 + vbNewLine + vbNewLine + Char2
            End If
        .Replacement.Text = string1
        End With
    End With

谢谢 !

标签: vbams-word

解决方案


我能够使用下面提到的代码实现您正在寻找的东西。请看看它是否也适合你。

Sub Find_Replace()

 Dim string1 As String
 Dim Char1 As String
 Dim Char2 As String

  Do While ActiveDocument.Range.Find.Execute("[a-z][A-Z]", , , True)
    
    With Selection.Find
        .Text = "[a-z][A-Z]"
        .Wrap = wdFindContinue
        .Forward = True
        .MatchWildcards = True
        .Execute
        If .Found Then
         string1 = Selection.Text
         Char1 = Left(string1, 1)
         Char2 = Right(string1, 1)
         string1 = Char1 + vbNewLine + vbNewLine + Char2
        End If
         .Execute ReplaceWith:=string1
       End With
       
  Loop
       
     MsgBox "Task Complete"
       
End Sub

推荐阅读