ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: rrjg

求助:如何将一个多页的word文档按页批量生成新word文件!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-3-3 17:21 | 显示全部楼层
    For Each oPage In ThisDoc.ActiveWindow.ActivePane.Pages
        '
取得文档的文本层内容,此处的Item可根据实际情况修改,其值为
0-5
        Set myRange = oPage.Rectangles(1).Range
        '
取得一个以段落标记为分隔符的一维数组

        myArray = VBA.Split(myRange.Text, Chr(13))
        '
将所有文本合并为一个字符串
        PageString = VBA.Join(myArray, "")
        '
取得文档中每节的页面设置
        With myRange.Sections(1).PageSetup
            sinLeft = .LeftMargin    '
左页边距
            sinRight = .RightMargin    '
右页边距
            sinTop = .TopMargin    '
上边距
            sinBottom = .BottomMargin    '
下边距
            pgOrientation = .Orientation    '
纸张方向
        End With
        For Each oChar In ErrChar    '
进行一系列替换,即删除无效字符
            PageString = VBA.Replace(PageString, oChar, "")
        Next
        strName = VBA.Left(PageString, 20)    '
取得一个前二十个字符的文件名
        strName = strName & ".doc"
        myRange.Copy    '
复制

TA的精华主题

TA的得分主题

发表于 2007-3-3 17:22 | 显示全部楼层
        Set myDoc = Documents.Add(Visible:=False)    '新建一个隐藏的空白文档
        With myDoc
            .Content.Paste    '
粘贴
            .Content.Paragraphs.Last.Range.Delete    '
删除最后一个段落标记
            With .PageSetup    '
进行页面设置
                .Orientation = pgOrientation
                .LeftMargin = sinLeft
                .RightMargin = sinRight
                .TopMargin = sinTop
                .BottomMargin = sinBottom
            End With
            '
如果有相同的文档,则自动随时间序数命名
            If VBA.Dir(myFolder & strName, vbDirectory) <> "" Then strName = Timer & ".doc"
            .SaveAs myFolder & strName    '
另存为
            .Close    '
关闭文档
        End With
    Next
    ThisDoc.Characters(1).Copy    '
变相清空剪贴板
    Application.ScreenUpdating = True    '
恢复屏幕更新
    sinEnd = Timer    '
取得代码运行结束的时间
    If MsgBox("
分页保存结束,用时:" & sinEnd - sinStart & _
              "
,是否打开指定文件夹查看分页保存后的文档情况
?", vbYesNo, myMsgTitle) = vbYes Then _
       ThisDoc.FollowHyperlink myFolder
    Exit Sub
ErrHandle:
    MsgBox "
错误号:" & Err.Number & vbLf & "出错原因
:" & Err.Description, myMsgTitle
    Err.Clear
    Application.ScreenUpdating = True    '
恢复屏幕更新

End Sub
'----------------------


我会抽空另外做一个适宜于其他版本的分页保存程序。

TA的精华主题

TA的得分主题

发表于 2007-3-3 17:41 | 显示全部楼层

sKJVUG71.rar (701 Bytes, 下载次数: 293)

将文件解压到任何地方,最好是桌面.

将你的文件拖到脚本文件图标上.看看是不是你想要的结果.别担心,并不会破坏原文件的.

也许过程有点慢

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-3-3 19:41 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-5-1 13:07 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-9-6 17:36 | 显示全部楼层
QUOTE:
以下是引用c81在2007-3-1 14:02:30的发言:

吾有一简法,不知可行否:

将每处你要分割的头句话设置成一个大纲级别(如果不是,用查找替换等方法生成),如1级,切换到大纲视图下,Ctrl+A后,点工具“创建子文档”,然后点保存,Word会问你放的位置,确定即可,文档就分开了,而且都是以头句为标题的。

可是,如果把创建的子文档删除后,原文件就打不开了?如图


求助:如何将一个多页的word文档按页批量生成新word文件!

求助:如何将一个多页的word文档按页批量生成新word文件!

TA的精华主题

TA的得分主题

发表于 2007-9-10 20:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2008-5-31 02:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

To 守版:

能否做个通用版本?

同时发现批量生成的新文档的视图模式都是普通视图,而不是页面视图,能否加以改进一下?

[此贴子已经被作者于2008-6-1 20:48:34编辑过]

TA的精华主题

TA的得分主题

发表于 2009-2-18 11:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-11-2 16:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
真是好东西啊!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 23:50 , Processed in 0.045964 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表