以下是引用守柔在2007-1-23 16:17:16的发言: 上述代码漏洞很多,请楼主详细说明你的意图。 谢谢守柔。 我结合你之前的程序,修改了一下,终于可以完成我的需求——按页拆分WORD文档。 麻烦你帮忙看一下还有没有什么需要改正的(呵呵,其实很多是你的程序)。谢谢。 Sub SaveAsPage() Dim PageCount As Integer, StartRange As Long, EndRange As Long, MyRange As Range, Fn As String, MyDoc As Document Dim SaveFileName$ SaveFileName = "c:\zj" '设置文件保存的路径和文件名,这里为c:\zj*.doc,*为页码序号 On Error Resume Next PageCount = Selection.Information(wdNumberOfPagesInDocument) Range(0, 0).Select '将光标移至文档起点 For i = 1 To PageCount '设置循环次数 StartRange = Selection.Start '取得该页的第一个字符位置 Selection.EndKey Unit:=wdLine '将光标移动到该页首行的最后位置 Fn = Range(StartRange, Selection.End - 1) '-1的目的是防止该页首行含有段落标记,导致出错. If i = PageCount Then '如果循环到达最后一页 EndRange = ActiveDocument.Content.End '将文档最后位置赋值于EndRange Else Selection.GoToNext (wdGoToPage) '否则,将下一页的起始位置赋值于EndRange(等同于本页的最后位置) EndRange = Selection.Start End If Set MyRange = Range(StartRange, EndRange) '将本页中的内容进行复制 MyRange.Copy Set MyDoc = Documents.Add '新建一空白文档 MyDoc.Range(0, 0).Paste '在文档开始处粘贴 ActiveDocument.SaveAs FileName:=SaveFileName & i & ".doc", FileFormat:= _ wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _ True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _ False, SaveNativePictureFormat:=False, SaveFormsData:=False, _ SaveAsAOCELetter:=False MyDoc.Close '关闭文档 Next End Sub |