|
VBA:删除表内或表外的空格__保留英文间空格
原帖由 我爱myvba 于 2010-1-15 22:25 发表
……
雨雪霏霏老师的上面两段代码真是不错,非常好,解决了我的大问题。谢谢。
想再请教一下,如果文档中有英文,能不能保留英文之间的半角空格,如果都删除的话,英文字母就都连在一起了。...
请 我爱myvba 兄试试以下代码:
Sub 删除全文表格中的空格__保留英文间空格()
'2010.01.16 雨雪霏霏试写。
Dim myRange As Range, myTable As Table
Application.ScreenUpdating = False '关闭屏幕更新
For Each myTable In ActiveDocument.Tables '逐个在所有表格中循环
Set myRange = myTable.Range '为下一步的“替换”定义一个作用范围,新范围为表格之一
With myRange.Find
.ClearFormatting '清除“查找”时的所有格式
'以下两个替换(必须是两次)将表格内所有英文间的一个或多个空格替换为“刀牛试小”
.Execute FindText:="([a-zA-Z.,])[ ]{1,}([a-zA-Z])", replaceWith:="\1刀牛试小\2", _
Wrap:=wdFindStop, MatchWildcards:=True, Replace:=wdReplaceAll
.Execute FindText:="([a-zA-Z.,])[ ]{1,}([a-zA-Z])", replaceWith:="\1刀牛试小\2", _
Wrap:=wdFindStop, MatchWildcards:=True, Replace:=wdReplaceAll
'以下将表格内所有空格去除
.Execute FindText:="[ ]{1,}", replaceWith:="", _
Wrap:=wdFindStop, MatchWildcards:=True, Replace:=wdReplaceAll
'以下将所有“刀牛小试”替换为一个半角空格
.Execute FindText:="刀牛试小", replaceWith:=" ", _
Wrap:=wdFindStop, MatchWildcards:=False, Replace:=wdReplaceAll
End With
Next
Application.ScreenUpdating = True '恢复屏幕更新
End Sub
Sub 删除全文表格外的空格__隐藏和解隐藏文字法__保留英文间空格()
'2010.01.16 雨雪霏霏试写。
'此宏通过“全文的文字设为隐藏”等一系列关于“隐藏文字”的操作进行迂回空格替换,
'如果您的文档不方便进行“隐藏文字”的一系列操作,请改以其他文字格式进行。
Dim myRange As Range, myTable As Table
Application.ScreenUpdating = False '关闭屏幕更新
ActiveDocument.Range.Font.Hidden = True '隐藏文档中所有文字
For Each myTable In ActiveDocument.Tables '逐个在所有表格中循环
myTable.Range.Font.Hidden = False '显示表格中的所有文字
Next '继续此一循环
Set myRange = ActiveDocument.Range '为以下“替换”定义一个作用范围,新范围为全文档
With myRange.Find '在此范围内“查找”
.ClearFormatting '清除“查找”时的所有格式
.Font.Hidden = True '重新定义“查找”时的格式为隐藏文字,只查找隐藏文字,亦即对表格外的全文进行查找
'以下两次替换(必须是两次)将表格外所有英文间的一个或多个空格替换为“刀牛试小”
.Execute FindText:="([a-zA-Z.,])[ ]{1,}([a-zA-Z])", replaceWith:="\1刀牛试小\2", _
Wrap:=wdFindStop, MatchWildcards:=True, Replace:=wdReplaceAll
.Execute FindText:="([a-zA-Z.,])[ ]{1,}([a-zA-Z])", replaceWith:="\1刀牛试小\2", _
Wrap:=wdFindStop, MatchWildcards:=True, Replace:=wdReplaceAll
'以下将表格外所有空格去除
.Execute FindText:="[ ]{1,}", replaceWith:="", _
Wrap:=wdFindStop, MatchWildcards:=True, Replace:=wdReplaceAll
'以下将所有“刀牛小试”替换为一个半角空格
.Execute FindText:="刀牛试小", replaceWith:=" ", _
Wrap:=wdFindStop, MatchWildcards:=False, Replace:=wdReplaceAll
End With
myRange.Font.Hidden = False '显示全文档的文字
Application.ScreenUpdating = True '恢复屏幕更新
End Sub |
|