这周四开会,发现部门的需求文档里,都是没用的双删除线,完全没有用途,几百页的文档里充斥了这样的垃圾,让我看着很不爽,所以就写了VBA程序来把这些内容删除了,试了试还不错。代码如下:

Function IsReadOnly()Function IsReadOnly() As Boolean ‘检查文档是否只读
    If ActiveDocument.ReadOnly Then
        IsReadOnly = True
    Else
        IsReadOnly = False
    End If
End Function

Sub 删除双删除线的内容()Sub 删除双删除线的内容()
    If IsReadOnly = True Then
        MsgBox "此文档是只读的,请修改其只读属性"
        Exit Sub
    End If
    
    Dim r As Range
    Dim count As Integer  '总共删除的字符数
    count = 0
    
    If Selection.Characters.count <> 1 Then  '如果选择了某段文字
        For Each r In Selection.Characters      ’对于每一个选择的字符
            If r.Font.DoubleStrikeThrough <> 0 Then     '如果是双删除线
                r.Select
                Selection.ClearFormatting                  '清楚样式
                r.Delete                                             '删除
                count = count + 1                             '记录删除的字符加1
            End If
        Next
        MsgBox "共删除带有双删除线的字符:" & count & "个"
    Else
        If MsgBox("要进行的操作是删除整篇文档中的双删除线,是否继续?", vbYesNo, "删除提示") _    
                                                                                                                                                = VbMsgBoxResult.vbYes Then
            For Each r In ActiveDocument.Characters          ‘删除整个文档
                If r.Font.DoubleStrikeThrough <> 0 Then
                    r.Select
                    Selection.ClearFormatting
                    r.Delete
                    count = count + 1
                End If
            Next
            MsgBox "共删除带有双删除线的字符:" & count & "个"
        End If
    End If
End Sub

当然,这是花费很多时间,我测试的文档300+页,花了10分钟,没办法,慢就慢些吧,删除了双删除线的内容后,发现文档的页数没有减少,才发现,只是删除了内容,换行符和表格里的空行还留着。

所以又写了一个程序,删除了表格中的空行

Sub 删除表格中空白的行()Sub 删除表格中空白的行()
    On Error Resume Next
    If IsReadOnly = True Then
        MsgBox "此文档是只读的,请修改其只读属性"
        Exit Sub
    End If
    
    Dim t As Table
    Dim rr As Range
    Dim r As Row

    Dim i As Long
    Dim j As Long

    For Each t In ActiveDocument.Tables  '遍历整个文档中的表格
        With t.Range.Find                             '替换表格中换行符
            .Text = "^p"
            .Forward = True
            .Replacement.Text = ""                   '替换为空格
      .Execute Replace:=wdReplaceAll
        End With
        For i = 1 To t.Rows.count                   '遍历表格中的每一个cell
                For j = 1 To t.Columns.count
                    t.Cell(i, j).Range.Select
                    Selection.ClearFormatting
                    If t.Cell(i, j).Range.Characters.count <> 1 Then       ’如果cell中的字符大于1,退出列循环
                        Exit For
                    End If
                Next
                If (j - 1) = t.Columns.count Then                  '如果遍历了所有的列cell,那个这行为空行
                    t.Cell(i, 1).Select
                    Selection.Rows.Delete                           '删除空行
                End If
                
        Next

    Next
   
    ActiveDocument.Save  '保存
End Sub

可能大家看这段代码,有些别扭,但是我刚开始的想法也不是这么做,但是由于Word的种种限制,我只有用了这种办法,还算可以,就是有些慢。

对于如何把这段VBA打成包,集成到Word的按钮栏里,我还是不知道如何做,希望可以得到大家的帮助。

我的想法是打包成一个exe文件,双击安装就好了。

Word中删除双删除线的内容和删除表格中的空白行相关推荐

  1. java使用poi.xssf 写入内容到excel表格中 和 读取 表格里面的数据

    一.java使用poi.xssf 写入内容到excel表格中 public class TestExcel {//创建一个excel工作簿public static String outputFile ...

  2. excel vba 把内容放到剪贴板,以及把剪贴板的内容粘贴到表格中

    excel vba 把内容放到剪贴板,以及把剪贴板的内容粘贴到表格中 如果你从其他地方复制了文字.图片等内容,比如从网页上.然后要粘贴到表格中. 只需要一句就好了: ActiveSheet.Paste ...

  3. linux中sed -i命令修改文件内容、在文件中插入行、删除文件中删除行

    文章目录 0.sed -i与sed 1.修改文件内容 2.在文件中插入行 3.在文件中删除行 4.使用find查找文件,并用 | xargs传输文件名给sed命令 0.sed -i与sed sed - ...

  4. java解析word 波浪线,word页面边框双波浪线

    word如何在文本最后添加边框线或者双波浪线~ 可以教你一个简单易懂的:1.在你文本外面画一个表格,word画表格:表格--绘制表格2.你可以在工具栏上找到边框颜色,线形,磅数等,如果你需要曲线就选择 ...

  5. linux中可以使用以下命令查看文件内容,在Linux服务器中使用命令行中查看文件内容...

    通常查看文件内容的方法是简单地在文本编辑器中打开它.然而,为了更快速地查看,事实上,也为了在shell脚本中实现自动化,使用文本编辑器的方法并不适合. 在Linux中,有很多命令可以解决这个问题:在命 ...

  6. SAP ABAP屏幕(Dialog)开发中,获取文本框的内容并且存到数据库中。

    续更SAP相关内容. 这次讲一下在ABAP屏幕开发中怎样获取文本框的值. 在C# Winform开发中,我们直接 textBox.Text就可以取到文本框的值,但在ABAP中要繁琐一些. 好了,操作. ...

  7. 查询oracle数据库的表格数据类型,excel表格中如何查询数据库数据类型-我想把excel表格中的数据导入oracle数据库中,想在......

    在excel表里,什么是:字段.记录.数据类型.多工... declare @t table(id numeric(18,2)) insert into @t SELECT   col1 FROM   ...

  8. 计算机怎么在表格里打勾,excel中怎么输入打勾符号在哪里,excel表格中怎么输入打勾符号...

    在使用excel制作文档时,我们可以使用该软件制作印章,下面我们就来看看在excel中是如何制作漂亮的印章的吧. 操作方法 第1:打开excel这款软件我们在插入里找到形状选项, 点击该选项在其下拉菜 ...

  9. 怎么删除mysql的所有文件内容_mysql删除全部数据库

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

最新文章

  1. mysql表误删回复_mysql 找回误删表的数据方法(必看)
  2. 1.1 为什么选择序列模型-深度学习第五课《序列模型》-Stanford吴恩达教授
  3. vb编程的好帮手--资源文件
  4. 计算机与材料化学应用背景介绍,计算机在材料工程中的应用.ppt
  5. Nexus3.x.x上传第三方jar
  6. nodejs 实现文件拷贝
  7. UPS开始尝试“货车+无人机”的投递方式,不必再担心快递员离职了
  8. mysql企业版安装_mysql企业版怎么安装图解
  9. 王者回归! Adobe Creative Cloud 打造云时代的创意体验
  10. Cookie、Session 简述
  11. 怎么找到电脑的打印机
  12. 服务器右键文件夹不显示共享,右键不出现共享菜单 文件或文件夹不能共享怎么办?...
  13. 【Solidity】7. 部件 - 深入理解Solidity
  14. 洛谷P1725 琪露诺
  15. HTTP协议入门 状态码大全
  16. 使用Google colab的GPU运行resnet
  17. 什么品牌的蓝牙耳机音质好?四款高音质蓝牙耳机推荐
  18. 每日分享正能量一段话45句
  19. 求某学生8门课的平均分
  20. Word文档如何设置成不可编辑的模式?

热门文章

  1. CUDA:在NPP中实现流域规划实例
  2. 微信理财通和余额宝哪个好
  3. 一包烟尝试解决docx安装失败,并尝试运行标号、全文格式、生成表格自动化处理(2)
  4. c语言 do while 素数,1. 编写程序,求30以内的所有素数之和.用do while做
  5. 什么是版本控制 SVN subversion
  6. 在校生如何攻略系统集成项目管理工程师【62,62】
  7. RT-Thread 隐藏的宝藏之ringbuff
  8. April 28th Tuesday (四月 二十八日 火曜日)
  9. Color Coherence Vector
  10. Flutter应用名称语言国际化