ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 17216|回复: 25

[求助] 怎样用Word VBA删除空行(3楼解决了)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-12-20 14:57 | 显示全部楼层 |阅读模式
每篇文章都有几十行空行,打印太浪费纸

在网上查了这个VBA
Sub DelBlank()
'
' DelBlank 宏
'
'

    Dim i As Paragraph, n As Long
    Application.ScreenUpdating = False '关闭屏幕刷新
    For Each i In ActiveDocument.Paragraphs '在活动文档的段落集合中循环
        If Len(i.Range) = 1 Then '判断段落长段,此处可根据文档实际情况
            i.Range.Delete '进行必要的修改可将任意长度段落删除
            n = n + 1 '计数
        End If
    Next
    MsgBox "共删除空白段落" & n & "个!"
    Application.ScreenUpdating = True '恢复屏幕刷新


End Sub


对我的附件没用,我新建了一个文档可以执行,为什么?



用2楼的   搜索 ^P^P  替换为 ^P,对我的附件也不行。
3楼的部分行,谢谢大家了。

[ 本帖最后由 roger600001 于 2009-12-20 18:00 编辑 ]

TEST12202009.rar

8.11 KB, 下载次数: 106

TA的精华主题

TA的得分主题

发表于 2009-12-20 15:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
搜索 ^P^P  替换为 ^P

TA的精华主题

TA的得分主题

发表于 2009-12-20 16:32 | 显示全部楼层
  1. Sub DelBlaRows()
  2.     ActiveDocument.Content.Find.Execute _
  3.     findtext:="[^11^13]{1,}", MatchWildcards:=True, _
  4.     replacewith:="^p", Replace:=wdReplaceAll
  5. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2010-1-15 20:06 | 显示全部楼层

回复 3楼 kqbt 的帖子

当段落符前面有空格时不行,可否加进替换此类代码?

TA的精华主题

TA的得分主题

发表于 2012-4-3 13:49 | 显示全部楼层
我试了,对一楼的附近有用啊!谢谢一楼的代码

TA的精华主题

TA的得分主题

发表于 2012-4-4 14:43 | 显示全部楼层
以下为VBA小菜鸟本人之最新自编独创代码,希望对大家有所帮助:
  1. Sub 删除段落首尾空格及空行()
  2.     ActiveDocument.Content.Find.Execute findtext:="^l", replacewith:="^p", Replace:=wdReplaceAll    '手动换行符 => 段落标记(全部替换)
  3.     ActiveDocument.Content.Find.Execute findtext:="^13", replacewith:="^p", Replace:=wdReplaceAll   '真假回车符 => 段落标记
  4.     ActiveDocument.Content.Find.Execute findtext:="^s", replacewith:=" ", Replace:=wdReplaceAll     '不间断空格 => 半角空格
  5.     ActiveDocument.Content.Find.Execute findtext:="(", replacewith:="(", Replace:=wdReplaceAll     '英文左括号 => 中文左括号
  6.     ActiveDocument.Content.Find.Execute findtext:=")", replacewith:=")", Replace:=wdReplaceAll     '英文右括号 => 中文右括号

  7.     Dim i As Paragraph, n As Long
  8.     For Each i In ActiveDocument.Paragraphs
  9.         For n = 1 To i.Range.Characters.Count
  10.             If i.Range Like " *" Or i.Range Like " *" Or i.Range Like Chr(9) & "*" Then
  11.                 i.Range.Characters(1).Delete
  12.             ElseIf i.Range Like "* " & Chr(13) Or i.Range Like "* " & Chr(13) Or i.Range Like "*" & Chr(9) & Chr(13) Then
  13.                 Do
  14.                     i.Range.Select
  15.                     Selection.EndKey Unit:=wdLine
  16.                     Selection.TypeBackspace
  17.                 Loop Until Asc(i.Range.Characters(i.Range.Characters.Count - 1)) <> 32 Or Asc(i.Range.Characters(i.Range.Characters.Count - 1)) <> 9
  18.             Else
  19.                 Exit For
  20.             End If
  21.         Next n
  22.         If Len(i.Range) = 1 Then i.Range.Delete
  23.     Next

  24. ' 特例
  25.     For Each i In ActiveDocument.Paragraphs
  26.         If i.Range Like " “*" Or i.Range Like " (*" Then
  27.             i.Range.Select
  28.             Selection.HomeKey Unit:=wdLine
  29.             Selection.Delete Unit:=wdCharacter, Count:=1
  30.         End If
  31.         If i.Range Like "*) " & Chr(13) Or i.Range Like "*” " & Chr(13) Then
  32.             i.Range.Select
  33.             Selection.EndKey Unit:=wdLine
  34.             Selection.TypeBackspace
  35.         End If
  36.     Next
  37. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2012-6-26 23:00 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
做个记号,费事用时找不着

TA的精华主题

TA的得分主题

发表于 2012-6-27 15:03 | 显示全部楼层
当今全世界最好最新的——删除段落首尾空格及空行(宏):

Sub delSpaceLine()
    With ActiveDocument.Content.Find
        .Execute findtext:="^l", replacewith:="^p", Replace:=wdReplaceAll
        .Execute findtext:="^13", replacewith:="^p", Replace:=wdReplaceAll
        .Execute findtext:="(", replacewith:="(", Replace:=wdReplaceAll
        .Execute findtext:=")", replacewith:=")", Replace:=wdReplaceAll
    End With
    SendKeys "^(aej)", True
    Dim i As Paragraph
    For Each i In ActiveDocument.Paragraphs
        If Len(i.Range) = 1 Then i.Range.Delete
    Next
    ActiveDocument.Content.ListFormat.ConvertNumbersToText
    ActiveDocument.Content.Find.Execute findtext:="^t", replacewith:="", Replace:=wdReplaceAll
End Sub

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-8-13 19:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢413191246se ,强力收藏

TA的精华主题

TA的得分主题

发表于 2012-9-3 23:13 | 显示全部楼层
本帖最后由 molihim 于 2012-9-18 12:50 编辑

做个记号收藏学习

今天用上这个了:ActiveDocument.Content.Find.Execute findtext:="^13", replacewith:="^p", Replace:=wdReplaceAll   '真假回车符 => 段落标记

太好了,谢谢楼主
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-29 03:36 , Processed in 0.042511 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表