ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2012-6-15 09:49 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好帖子,收藏

TA的精华主题

TA的得分主题

发表于 2013-7-22 21:52 | 显示全部楼层
c81 发表于 2007-3-1 14:02
吾有一简法,不知可行否:将每处你要分割的头句话设置成一个大纲级别(如果不是,用查找替换等方法生成), ...

你好!我用了你的方法,非常好用。但有个问题请教,我发现文件名保存的时候,不是以word文档第一句作为文件名的,而是以原文件名再自动添加数字。请问怎样实现用第一句作为文件名保存呢?谢谢!

TA的精华主题

TA的得分主题

发表于 2013-7-22 22:40 | 显示全部楼层
搞定了,原来第一句的中间要连贯,不能有标点符号。我用邮件合并,在第一句插入了一个合并域,实现自动命名了。非常感谢各位高手

TA的精华主题

TA的得分主题

发表于 2013-10-14 11:48 | 显示全部楼层
守柔 发表于 2007-3-3 17:18
做了一个适用于WORD 2003及其以上版本的程序,具有一定通用性,可作为加载宏使用。以下代码供参考:'* ++ ...

守柔兄的程序我试用了,想提一下两点改进意见:
1.您的程序是逐页保存,能否改进成 所有奇数页 或者  偶数页 保存???
2.能否让WORD代码只对奇数页或者偶数页执行???

TA的精华主题

TA的得分主题

发表于 2013-10-16 09:57 | 显示全部楼层
做了一个适用于WORD 2003及其以上版本的程序,具有一定通用性,可作为加载宏使用。以下代码供参考:'* ++ ...

守柔兄的程序我试用了,想提一下两点改进意见:
1.您的程序是逐页保存,能否改进成 所有奇数页 或者  偶数页 保存???
2.能否让WORD代码只对奇数页或者偶数页执行???

TA的精华主题

TA的得分主题

发表于 2013-10-16 09:59 | 显示全部楼层
word打印的时候能够奇偶分开,也应该能够实现奇偶另存的功能,希望大家一起努力找到方法,可以解决很多困难

TA的精华主题

TA的得分主题

发表于 2013-10-16 10:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
dygcs 发表于 2013-10-16 09:59
word打印的时候能够奇偶分开,也应该能够实现奇偶另存的功能,希望大家一起努力找到方法,可以解决很多困难

奇偶页另存很容易做到,不过没什么意义

TA的精华主题

TA的得分主题

发表于 2013-10-17 16:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
奇偶页另存对于我的应用有意义啊,请教

TA的精华主题

TA的得分主题

发表于 2018-1-10 06:56 | 显示全部楼层
守柔 发表于 2007-3-3 17:22
        Set myDoc = Documents.Add(Visible:=False)  &nbs ...



不知什么原因,代码运行提示:运行时错误 ’13’,类型不匹配。
Option Explicit
SubSaveAsFileByPage()
    Dim ThisDoc As Document, myDoc As Document,oPage As Page, strName As String
    Dim myDialog As FileDialog, myFolder AsString, myArray() As String
    Dim myRange As Range, PageString As String,pgOrientation As WdOrientation
    Dim sinLeft As Single, sinRight As Single,sinTop As Single, sinBottom As Single
    Dim ErrChar() As Variant, oChar As Variant,sinStart As Single, sinEnd As Single
    Const myMsgTitle As String ="ExcelHome_ShouRou"
    If Val(Application.Version) < 11 ThenMsgBox "此程序需要运行在Word2003及其以上版本中!", vbInformation, myMsgTitle: Exit Sub
    sinStart = Timer
    On Error GoTo ErrHandle    '设置错误处理
    '定义一个FileDialog对象,为文件夹选取对话框
    Set myDialog =Application.FileDialog(msoFileDialogFolderPicker)
    With myDialog
        If .Show <> -1 Then Exit Sub    '如果未确定则退出
        myFolder = .InitialFileName    '取得文件夹路径
    End With
    Application.ScreenUpdating = False    '关闭屏幕更新
    Set ThisDoc = ActiveDocument    '定义一个Document对象,以利用本程序作为加载宏
    '文件自动命名时必须规避的字符
    ErrChar = Array("\","/", ":", "*", "?","""", "<", ">", "|")
    '在文档的每页中循环
For Each oPage InThisDoc.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    '复制
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

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 00:18 , Processed in 0.037948 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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