VBA小试牛刀

今天在看一本电子书《诸葛亮的十堂哲学课》时,突然想将其重新编辑成PDF格式。当我将书的第一章内容复制到Word中时才发现字符中混杂了太多的回车符。这时我想起前几天学习的VBA课程,在这里小试牛刀咯。
下面就是我写的一段VBA程序,可以将文本中的多余空行删除。其算法是逐行扫描文档,当发现该行只有一个符号(必为回车符)时就将其删除。
iCount = 0
Dim ps As Paragraph
Dim rngRange As Range
For Each ps In ActiveDocument.Paragraphs
iCount = iCount + 1
Set rngRange = ps.Range

If rngRange.Characters.Count = 1 Then
'MsgBox (rngRange.Characters(1))
rngRange.Delete
End If
Next
但我还没想出如何能删除段末尾的回车符,我不知道如何判断,虽然可以通过
If rngRange.Characters(rngRange.Characters.Count) = Chr(13) Then
来判断段落结尾处的字符是否是回车符,但如果简单删除,则会将原有的段落去除。且这样会引起循环的错误,在进行段落遍历的时候产生错误。
我想到可以用一个数组来存放单个回车符的位置,然后利用原文档中段落间有两个回车符的特点,将单回车符删除就可以了。
下面是代码,其可以在短文档中用,在长文档时还是会有数组溢出。要重新考虑算法咯。
Sub ClearBlankReturnChar()
Dim iCount, iIndex, iParagraphsNum
iCount = 0
iIndex = 0
Dim aLines(10000)

Dim ps As Paragraph
Dim rngRange As Range
For Each ps In ActiveDocument.Paragraphs
iCount = iCount + 1
Set rngRange = ps.Range
If rngRange.Characters.Count > iMaxRangeCount Then
iMaxRangeCount = rngRange.Characters.Count
End If

If rngRange.Characters.Count > 1 Then
iIndex = iIndex + 1
aLines(iIndex) = rngRange.End
End If
Next

For i = 1 To iIndex - 1
Selection.SetRange aLines(i) - i, aLines(i) - i + 1
'MsgBox (i)
Selection.Delete
Next
End Sub

夜已经很深了,早点睡咯!
=======================================================================

转载于:https://www.cnblogs.com/yankchina/archive/2006/08/13/475785.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值