ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4921|回复: 12

[求助] 用VB把word文档按每页拆分保存为单个word文档。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-8-28 11:15 | 显示全部楼层 |阅读模式
用VB把word文档按每页拆分保存为单个word文档,文件名称以每页不动产单元号加原文档名称为新文件名称。附件为邮件合并结果,需要拆分,但每页都有分页符,在网上搜的代码拆分以后后面都会有空白页,分页符在原文档删除的话表格格式就变了。所以请大神帮忙。

房屋信息调查表.rar

80.88 KB, 下载次数: 184

TA的精华主题

TA的得分主题

发表于 2019-8-28 11:54 | 显示全部楼层
干脆不用邮件合并,直接用代码保存为单个文件,更省事                                                                  
头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2019-8-28 12:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-28 14:22 | 显示全部楼层
本帖最后由 646411527 于 2019-8-28 14:31 编辑
小花鹿 发表于 2019-8-28 11:54
干脆不用邮件合并,直接用代码保存为单个文件,更省事                                                   ...

邮件合并是往表格里填数据,

申请书调查表模版.rar

46.03 KB, 下载次数: 18

这是单个模版要填成千上万个这种表,邮件合并会快一点,就是拆分麻烦

TA的精华主题

TA的得分主题

发表于 2019-8-28 14:53 | 显示全部楼层
文档最后一页有一个 拆分按钮,试试

新建文件夹.rar

87.96 KB, 下载次数: 220

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-28 15:37 | 显示全部楼层
zmj9151 发表于 2019-8-28 14:53
文档最后一页有一个 拆分按钮,试试

QQ截图20190828152739.png 页面发生了变化,我有一段代码是自动获取了页面设置,但是好像只能提取竖版的,还只是两页另存为一个文件,单页另存的话就不行,你帮我看下。这段代码用在《不动产申请书》每两页另存为一个文档是可以的。《房屋信息调查表》是单页横版的,每页另存为一个文档。


Sub SplitEveryFivePagesAsDocuments()
    Dim oSrcDoc As Document, oNewDoc As Document
    Dim strSrcName As String, strNewName As String, strNewDot As String
    Dim oRange As Range
    Dim nIndex As Integer, nSubIndex As Integer, nTotalPages As Integer, nBound As Integer
    Dim fso As Object
    Dim sinLeft As Single, sinRight As Single, sinTop As Single, sinBottom As Single
    Dim i As Integer, N As Integer
    Dim pgOrientation As WdOrientation

    Application.ScreenUpdating = False    '关闭屏幕更新

    Const nSteps = 2        ' 修改这里控制每隔几页分割一次

    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
            '读取页面设置
            With oSrcDoc.Bookmarks("\page").Range.Sections(1).PageSetup
                sinLeft = .LeftMargin    '左页边距
                sinRight = .RightMargin    '右页边距
                sinTop = .TopMargin    '上边距
                sinBottom = .BottomMargin    '下边距
                pgOrientation = .Orientation    '纸张方向
            End With
            oSrcDoc.Windows(1).Activate
            Application.Browser.Target = wdBrowsePage
            Application.Browser.Next

            oNewDoc.Activate
            oNewDoc.Windows(1).Selection.Paste
            oNewDoc.Background.Fill.Transparency = oSrcDoc.Background.Fill.Transparency
            oNewDoc.Background.Fill.PresetTextured msoTexturePinkTissuePaper
            With oNewDoc.PageSetup
                .Orientation = pgOrientation
                .LeftMargin = sinLeft
                .RightMargin = sinRight
                .TopMargin = sinTop
                .BottomMargin = sinBottom
            End With
        Next nSubIndex
        '删除空白段落
        N = 0
        temp = ActiveDocument.Paragraphs.Count
        For i = temp To 1 Step -1
            If Len(Trim(ActiveDocument.Paragraphs(i).Range)) = 1 Then
                ActiveDocument.Paragraphs(i).Range.Delete
                N = N + 1
            Else
                Exit For
            End If
        Next

        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
    Application.ScreenUpdating = True    '恢复屏幕更新
    MsgBox "结束!"

End Sub


TA的精华主题

TA的得分主题

发表于 2019-8-28 17:49 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-8-28 21:02 | 显示全部楼层
646411527 发表于 2019-8-28 14:22
邮件合并是往表格里填数据,

我说得就是不用邮件合并,直接用模板生成单个文件,比用邮件合并后再拆分更省事                                

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-29 10:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zmj9151 发表于 2019-8-28 17:49
调整一下模板的页边距试试

我是外行啊,那个代码是在网上搜的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-29 11:21 | 显示全部楼层
小花鹿 发表于 2019-8-28 21:02
我说得就是不用邮件合并,直接用模板生成单个文件,比用邮件合并后再拆分更省事                         ...

有一个总的excel表是每户的信息分别对应录入到《不动产申请书》和《房屋信息调查表》,信息不全的就空着,还有个每户的CAD房屋分层图分户图,里面有个表面积表,把数据填到《房屋信息调查表》沥对应的位置。还有一个总的CAD权属图,要对应地籍号把占地面积填到《不动产申请书》里对应的位置。有成千上万户的数据,每户一个文件夹,邮件合并拆分以后,还要一个一个往对应的文件夹里放,很繁琐。所以单个模版生成可能会更麻烦。我先把文件传上来。还有就是能不能用vb批量提取多个CAD图形中的部分数据按顺序生成excel文件?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-25 12:52 , Processed in 0.053570 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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