宏可删除 Word 2010 文档中图形/文本之间的间距?

宏可删除 Word 2010 文档中图形/文本之间的间距?

我经常创建只包含图形项目的 Word(2010 版)文档,有时图形旁边会有一些文本,例如“新建!”(我想保留)。我想创建一个宏,删除文档中所有这些图形/图形之间带有文本的项目之间的所有间距(任何类型的间距),这样它们就会一个接一个地排列,直到填满一行,然后下一个图形会自动从下一行开始(然后再次重复一个接一个的图形,没有任何间距),等等。目前,我使用箭头、删除和退格键手动执行此操作,这非常耗时。我已上传“之前/之后”的 GIF 图像,以了解文档在运行宏之前和之后的样子:

宏之前(截图)宏后(截图)

顺便问一下,如果我想在图形之间添加一定数量的空格,有没有办法“调整”宏来实现这一点,而且很容易?如果可以,我还需要在宏中添加什么文本才能实现这一点?

非常感谢你的帮助。

答案1

Word 内置的“查找和替换”工具可以为您完成 90% 的工作。如果您使用“更多 >>”选项(其中有“特殊”下拉按钮),它可以搜索分页符、段落标记、空格等。

该“特殊”按钮将允许您选择段落、各种不同的空白字符、换行符等。

其余 10% 可以使用 VBA 开发人员选项卡上的宏记录器完成。

开始录制,逐一替换所有换行符、段落标记等,直到得到您想要的图像。

然后停止录制。瞧!宏的魔力。

经过快速测试,我可以使用以下方法消除大多数各种格式类型。^p对应于“段落标记”,而查找和替换工具则用""Ie 替换它。

Sub Macro1()
'
' Macro1 Macro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^p"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "^t"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^b"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "^m"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = " "
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

如果您希望每幅图像之间都有空格,则只需将.Replacement.Text = ""每个部分更改为包含空格,例如.Replacement.Text = " "

相关内容