Word文档中打印所有某个人姓名的页,求宏编程VBA

lucker888 2004-10-14 05:01:39
问题: 我想打印在word文档中所有包含了某个人姓名的页
我粗略编了一个宏:
Sub Macro1()
'
' Macro1 Macro
' 宏在 2004-10-14 由 bill 录制
Dim i As Integer

Selection.Find.ClearFormatting
With Selection.Find
.Text = "婷婷" '要查找的姓名
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With

Do While Selection.Find.Execute
ActiveDocument.PrintOut Range:=wdPrintCurrentPage '若找到姓名,则打印当前页
Selection.GoTo What:=wdGoToPage, Which:=wdGoToNext, Count:=1, Name:="" '下翻一页
Loop

End Sub

存在的问题:
我不知道怎么用VBA调用来判断是不是到了文档的末尾,若到了末尾,则应该停止查找,上面的程序会在最后一页陷入死循环,谁来帮我修正一下,感激涕零.........................呵呵呵
...全文
116 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lucker888 2004-10-16
哦,谢谢楼上的兄弟.

不过我的几百页文档里面有大概二百页有这个人的名字,你说的wdFindStop只查找一次,我是想从文档开始查找查到一页就马上打印一页,上面的程序已实现这个功能.但我不知道判断是不是到了文档的末尾的语句是什么,用什么语句来查找当前的页数是第几页,把上面的程序完善,谢谢
回复
lucker888 2004-10-16
呵呵,谢谢Clumsy(Kyrie eleison)兄弟,又是该结帖的时候了.

你给几条语句加上去,程序就运行正常了,谢谢。有机会再请教你。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
回复
clumsy 2004-10-16
哦? 那在打印语句之后加上下面的判断试试:
If Selection.Range.Information(wdActiveEndPageNumber) < Activedocument.BuiltInDocumentProperties(wdPropertyPages) Then
Selection.Goto .... ' 这里是你原来的 '下一页' 语句
Else
Exit Do
End If
回复
clumsy 2004-10-15
将 Find 方法的 .Wrap 属性置为 wdFindStop 试试? 这个是说搜索到文档结束时停止搜索
回复
lucker888 2004-10-15
问题没解决,自己顶....................................................
回复
lucker888 2004-10-14
找了一天总算找到一条计算页数总数的语句
ActiveDocument.ComputeStatistics(wdStatisticPages)
回复
lucker888 2004-10-14
哎,难道这种问题太复杂了吗,-:),有分都没人要啊
回复
发动态
发帖子
Office开发/ VBA
创建于2007-08-27

4968

社区成员

其他开发语言 Office开发/ VBA
申请成为版主
社区公告
暂无公告