zoukankan      html  css  js  c++  java
  • 将一个word文档按一页或多页拆分成多个文档

    工作中,有时候碰到需要将一个比较大的word按照指定的页数分割成若干个小的word文档,下面提供分割的方法供参考:

    一、按照单页拆分

    1、在Word里面打开那个需要分割的文档(假设它的文件名叫做“test.doc”);

    2、键入ALT+F11打开VBA编辑器,选择菜单“插入-模块”,或者键入ALT+F8打开宏命令窗口,或者点文档内上面的“工具”→“宏”→“宏”→找到这个宏→“运行”即可;

    3、粘贴下面的代码:

    Option Explicit

    Sub SplitPagesAsDocuments()

    Dim oSrcDoc As Document, oNewDoc As Document

    Dim strSrcName As String, strNewName As String

    Dim oRange As Range

    Dim nIndex As Integer

    Dim fso As Object

    Set fso = CreateObject("Scripting.FileSystemObject")

    Set oSrcDoc = ActiveDocument

    Set oRange = oSrcDoc.Content

    oRange.Collapse wdCollapseStart

    oRange.Select

    For nIndex = 1 To ActiveDocument.Content.Information(wdNumberOfPagesInDocument)

    oSrcDoc.Bookmarks("page").Range.Copy

    oSrcDoc.Windows(1).Activate

    Application.Browser.Target = wdBrowsePage

    Application.Browser.Next

    strSrcName = oSrcDoc.FullName

    strNewName = fso.BuildPath(fso.GetParentFolderName(strSrcName), _
    fso.GetBaseName(strSrcName) & "_" & nIndex & "." & fso.GetExtensionName(strSrcName))
    Set oNewDoc = Documents.Add

    Selection.Paste

    oNewDoc.SaveAs strNewName

    oNewDoc.Close False

    Next

    Set oNewDoc = Nothing

    Set oRange = Nothing

    Set oSrcDoc = Nothing

    Set fso = Nothing

    MsgBox "结束!"

    End Sub

    4、键入F5运行,看到“完成!”结束。

    5、检查当前文档所在路径下是否生成若干名为“原始文档_n.doc”(n代表其对应原始文档中的第几页)的文档,检查它们的内容是否就对应于原始文档每个页面的内容。

    二、按指定页动态拆分

     上述方法是按单页拆分的,如果想按照指定页数拆分,可使用下面的代码,其它步骤和上述按单页拆分方案相同。

    代码如下:

    Option Explicit

    Sub DynamicSplitPagesAsDocuments()

    Dim oSrcDoc As Document, oNewDoc As Document
    Dim strSrcName As String, strNewName As String
    Dim oRange As Range
    Dim nIndex As Integer, nSubIndex As Integer, nTotalPages As Integer, nBound As Integer
    Dim fso As Object

    Const nSteps = 3   //这里可以指定需要拆分的页数,如这里表示按照每3页拆分成一个小文档

    Set fso = CreateObject("Scripting.FileSystemObject")
    Set oSrcDoc = ActiveDocument
    Set oRange = oSrcDoc.Content

    nTotalPages = ActiveDocument.Content.Information(wdNumberOfPagesInDocument)
    oRange.Collapse wdCollapseStart
    oRange.Select
    For nIndex = 1 To nTotalPages Step nSteps
    Set oNewDoc = Documents.Add
    If nIndex + nSteps > nTotalPages Then
    nBound = nTotalPages
    Else
    nBound = nIndex + nSteps - 1
    End If
    For nSubIndex = nIndex To nBound
    oSrcDoc.Activate
    oSrcDoc.Bookmarks("page").Range.Copy
    oSrcDoc.Windows(1).Activate
    Application.Browser.Target = wdBrowsePage
    Application.Browser.Next

    oNewDoc.Activate
    oNewDoc.Windows(1).Selection.Paste
    Next nSubIndex
    strSrcName = oSrcDoc.FullName
    strNewName = fso.BuildPath(fso.GetParentFolderName(strSrcName), _
    fso.GetBaseName(strSrcName) & "_" & (nIndex nSteps) & "." & fso.GetExtensionName(strSrcName))
    oNewDoc.SaveAs strNewName
    oNewDoc.Close False
    Next nIndex
    Set oNewDoc = Nothing
    Set oRange = Nothing
    Set oSrcDoc = Nothing
    Set fso = Nothing
    MsgBox "结束!"

    End Sub

    注意:

    如文档中有分节符分解后的文档会出现空白页,如要分解后不出现空白页,需要把文档中的分节符全部删除。

    分节符若全部替换,要注意替换后文档可能会出现排版混乱,这则需要自己手动排版了。

    分节符是指为表示节的结尾插入的标记。分节符包含节的格式设置元素,如页边距、页面的方向、页眉和页脚,以及页码的顺序。分节符用一条横贯屏幕的虚双线表示。

    删除分节符的方法:

    试着按住shift键,然后点击鼠标左键,然后将显示出来的分节符删掉即可。

    分节符和分页符的区别:

    分页符只是分页,前后还是同一节;
    分节符是分节,可以同一页中不同节,也可以分节的同时下一页。
    两者用法的最大区别在于页眉页脚与页面设置,比如:
    1、文档编排中,某几页需要横排,或者需要不同的纸张、页边距等,那么将这几页单独设为一节,与前后内容不同节;
    2、文档编排中,首页、目录等的页眉页脚、页码与正文部分需要不同,那么将首页、目录等作为单独的节;
    3、如果前后内容的页面编排方式与页眉页脚都一样,只是需要新的一页开始新的一章,那么一般用分页符即可,当然用分节符(下一页)也行。

  • 相关阅读:
    Ubuntu Server中怎样卸载keepalived
    Winform中实现ZedGraph滚轮缩放后自动重新加载数据
    Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限
    C#中获取多个对象list中对象共有的属性项
    Windows7中启动Mysql服务时提示:拒绝访问的一种解决方式
    八、子查询实践
    四、bootstrap-Table
    二、sql新增后返回主键|sql 使用 FOR XML PATH实现字符串拼接|sql如果存在就修改不存在就新增
    一、动词、名词、形容词汇位置
    三、TortoiseSVN 单独拉取项目某个文件
  • 原文地址:https://www.cnblogs.com/cookiewu/p/9845472.html
Copyright © 2011-2022 走看看