ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

TO——守柔:邮件合并后分拆成单个文档保存的代码应用问题请教

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-1-25 17:24 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
守柔版主您好!我正在处理一个邮件合并文档发,大约有195个合并邮件,每个邮件有固定格式(单个文档有10页),版面都 排好,但想把他们能分别 保存成单个文件,偶尔看到您的大作——“分页保存-保留格式设置的代码”,但我应用不成功,也不会修改,能否帮我修改一下代码让我直接能复制应用,文档名自动安顺序号保存即可,如194个文件按001,002,。。。。到194,如能赐教,本人在此不胜感激!

分页保存-保留格式设置的代码
Sub SaveAsPage()
Dim PageCount As Integer, StartRange As Long, EndRange As Long, MyRange AsRange
Dim Fn As String, MyDoc As Document, MyHeader As Range, MyFooter As Range
On Error Resume Next
With Selection
PageCount = .Information(wdNumberOfPagesInDocument)
.HomeKey unit:=wdStory
For i = 1 To PageCount
StartRange = .Start
Set MyHeader = .Sections(1).Headers(wdHeaderFooterPrimary).Range
MsgBox MyHeader
MyHeader.Copy
Set MyFooter = .Sections(1).Footers(wdHeaderFooterPrimary).Range
MsgBox MyFooter
Set MyDoc = Documents.Add'原现有光标所在页的页面设置赋值给新文档
WithApplication.Windows(ThisDocument.Name).Selection.Sections(1).PageSetup ActiveDocument.Sections(1).PageSetup.TopMargin = .TopMargin ActiveDocument.Sections(1).PageSetup.BottomMargin
= .BottomMargin
= .RightMargin
ActiveDocument.Sections(1).PageSetup.LeftMargin = .LeftMargin
ActiveDocument.Sections(1).PageSetup.RightMargin
ActiveDocument.Sections(1).PageSetup.Orientation = .Orientation
EndRange
End With
With ActiveDocument '打开页眉页脚
.ActiveWindow.View.SeekView = wdSeekCurrentPageHeader
With Application.Windows(MyDoc).Selection
.Paste '粘贴其中内容并删除最后一个段落标记
.Paragraphs(.Paragraphs.Count).Range.Delete
End With '关闭页眉页脚
.ActiveWindow.View.SeekView = wdSeekMainDocument
.ActiveWindow.View.Type = wdPrintView
End With
ThisDocument.Activate
Fn = i & ActiveDocument.Name
If i = PageCount Then        '如果循环到达最后一页
EndRange = ActiveDocument.Content.End        '将文档最后位置赋值于
Else
EndRange = .GoToNext(wdGoToPage).Start        '否则,将下一页的起始位置赋值于 EndRange(等同于本页的最后位置) End If
Set MyRange = ActiveDocument.Range(StartRange, EndRange)        '将本页中的内容进行复制
MyRange.Copy
With Application.Windows(MyDoc).Selection
.Paste
.Paragraphs(.Paragraphs.Count).Range.Delete
.Find.Execute        findtext:="^m",        Replacewith:="", Replace:=wdReplaceAll
MyDoc.SaveAs FileName:=Fn       
MyDoc.Close       
End With
Next

End With
End Sub

TA的精华主题

TA的得分主题

发表于 2011-1-25 21:59 | 显示全部楼层

用下面一段代码吧

Sub 每N页分割为一个新文档__保存到同目录下()
'特别鸣谢"雨雪霏霏、守柔版主。
    Dim MyPath As String, PageCount As Integer
    Dim StartRange As Long, EndRange As Long, MyRange As Range
    Dim Fn As String, MyDoc As Document, i As Integer
    On Error Resume Next
    Application.ScreenUpdating = False
    MyPath = ActiveDocument.Path    '取得文档路径
    PageCount = Selection.Information(wdNumberOfPagesInDocument)    '取得文档总页数
    N = InputBox("按每几页拆分?默认为10:", "请输入数值", 10)
    Selection.HomeKey unit:=wdStory    '将光标移至文档起点
    For i = 1 To PageCount / N + (PageCount Mod N)    '设置循环次数,如3则表示每3页做一次循环
        StartRange = Selection.Start    '取得该页的第一个字符位置
        Selection.EndKey unit:=wdLine    '将光标移动到该页首行的最后位置
        Fn = i & ActiveDocument.Name    '-1的目的是防止该页首行含有段落标记,导致出错.
        If i * N >= PageCount Then    '如果循环到达最后一页
            EndRange = ActiveDocument.Content.End    '将文档最后位置赋值于EndRange
        Else
           For J = 1 To N
            Selection.GoToNext (wdGoToPage)
            Next J
            EndRange = Selection.Start
        End If
        Set MyRange = ActiveDocument.Range(StartRange, EndRange)  '将N页中的内容进行复制
        MyRange.Copy
        Set MyDoc = Documents.Add    '新建一空白文档
        With MyDoc
             .Content.Paste    '在新文档中粘贴
             .Content.Paragraphs.Last.Range.Delete '删除新文档末尾多出来的一个段落标记
             .SaveAs FileName:=MyPath & "/" & Fn
             '保存新文档到原文档所在目录。如果删除"MyPath & "/" & ",。则保存到"我的文档"中。
             .Close    '关闭新文档
        End With
    Next
    Application.ScreenUpdating = True
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-1-26 14:53 | 显示全部楼层

回复 2楼 szqhb 的帖子

谢谢szqhb 楼主指点!

TA的精华主题

TA的得分主题

发表于 2011-2-24 17:51 | 显示全部楼层
谢谢szqhb兄的分享,收藏学习!
对于含表格的文档,处理效果好像不是很好!

[ 本帖最后由 tangqingfu 于 2011-2-24 18:01 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-2-24 20:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
此贴要收藏

TA的精华主题

TA的得分主题

发表于 2012-6-15 10:02 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2012-8-31 10:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2013-1-10 10:45 | 显示全部楼层
纸张横向的处理也不好,期待完善

TA的精华主题

TA的得分主题

发表于 2013-1-17 17:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
留印备用!留印备用!!{:soso_e113:}

TA的精华主题

TA的得分主题

发表于 2013-1-22 21:16 | 显示全部楼层
szqhb 发表于 2011-1-25 21:59
Sub 每N页分割为一个新文档__保存到同目录下()
'特别鸣谢"雨雪霏霏、守柔版主。
    Dim MyPath As Strin ...

新的文档如何默认是只读模式尼?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-6-1 17:02 , Processed in 0.048276 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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