以下是引用honey_bee在2005-5-4 22:43:00的发言:
对了,请问版主,打印时使用S3P2可以得到第3节第2页,为什么WORD此时又可以定位节中的第几页呢
S3P2这个说法,我也长见识了,应该是2003版的功能了?
我做了一个如何定位的S3P2的代码,可以供楼主参考:
'* +++++++++++++++++++++++++++++
'* Created By I Love You_Word!@ExcelHome 2005-5-5 11:32:34
'仅测试于System: Windows NT Word: 10.0 Language: 2052
'^The Code CopyIn [ThisDocument-ThisDocument]^'
'* -----------------------------
Option Explicit
Option Compare Text
Sub Example()
Dim SecStartPage As Integer, MyRange As Range, IptText As String
Dim Sec As Integer, Page As Integer, PPos As Integer
IptText = InputBox("请输入想要定位的节/页位置,该位置将处于指定位置的开始处," & vbCrLf & "请以S2P2格式输入!")
If IptText = "" Or Not IptText Like "S*P*" Then GoTo Clew
PPos = VBA.InStr(IptText, "P") * 1 '取得字符串P的位置
Sec = Mid(IptText, 2, PPos - 2) * 1 '取得节号
Page = Mid(IptText, PPos + 1, Len(IptText) - PPos) '取得节中的页数
With ThisDocument
'如果节数不符或者页数为0或者节号为0则退出
If Sec > .Sections.Count Or Page = 0 Or Sec = 0 Then GoTo Clew
'定义一个RANGE对象
Set MyRange = .Range(.Sections(Sec).Range.End - 1, .Sections(Sec).Range.End - 1)
'如果页数大于节的总页数
If Page > MyRange.Information(wdActiveEndPageNumber) Then GoTo Clew
'定义一个RANGE对象
Set MyRange = .Range(.Sections(Sec).Range.Start, .Sections(Sec).Range.Start)
'取得节的起始页数
SecStartPage = MyRange.Information(wdActiveEndPageNumber)
'将插入点移动到该处
Selection.GoTo wdGoToPage, , , SecStartPage + Page - 1
End With
Exit Sub
Clew:
MsgBox "您提供的数据中包含无效数据,可能的原因有:" & vbCrLf & _
"您可能取消的输入对话框,或者没有输入相应数据;" & vbCrLf & _
"您输入了与规定形式不符的文本;" & vbCrLf & _
"您输入的节数或者页数为0;" & vbCrLf & _
"节数超过了文档总节数;" & vbCrLf & _
"页数超过了该节的总页数.", vbInformation
End Sub
'---------------------- |