【源代码】Word VBA按任意页拆分文档
VBA说
共 3352字,需浏览 7分钟
· 2021-09-03
具体需求
每2页拆分一下Word文档
通用代码
思路:遍历文档所有页,隔几页开始挨着复制每页内容,复制到新的文档中。
Sub SplitPagesAsDocuments()
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 = 2 ' 修改这里控制每隔几页分割一次
Set fso = CreateObject("Scripting.FileSystemObject")
Set oSrcDoc = ActiveDocument
Set oRange = oSrcDoc.Content
nTotalPages = ActiveDocument.Content.Information(wdNumberOfPagesInDocument)
'利用Information属性获取活动文档中的总页码
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.Windows(1).Activate
wdBrowsePage =
Application.Browser.Next
oNewDoc.Activate
oNewDoc.Windows(1).Selection.Paste
wdStory
wdCharacter, -1
'为了避免拆分后有多余的空白页,向前删除1个位置
Next nSubIndex
strSrcName = oSrcDoc.FullName
strNewName = fso.BuildPath(fso.GetParentFolderName(strSrcName), _
& "_" & (nIndex \ nSteps + 1) & "." & fso.GetExtensionName(strSrcName))
strNewName
False
Next nIndex
Set oNewDoc = Nothing
Set oRange = Nothing
Set oSrcDoc = Nothing
Set fso = Nothing
MsgBox "结束!"
End Sub
知识点
Information属性
◎作用:
'返回有关指定的所选内容或区域的信息。
◎用法:
表达式.Information(Type)
'Type代表WdInformation,必需。消息类型。具体含义查帮助
◎案例:
'获取当前页码和总页码。
Sub 获取当前页码和总页码()
MsgBox Selection.Information(wdActiveEndPageNumber)
MsgBox Selection.Information(wdNumberOfPagesInDocument)
End Sub
'判断光标是否位于表格中
Sub 判断光标是否位于表格中()
If Selection.Information(wdWithInTable) = True Then
MsgBox "光标位于表格中"
Else
MsgBox "光标不位于表格中"
End If
End Sub
EndKey方法
一般结合Slection。用Selection.EndKey 。
◎作用:
'将选定内容移动或扩展到指定单位的末尾。
◎用法:
表达式.EndKey(Unit, Extend)
'Unit 可选参数 移动或扩展选定内容时基于的单位。可以是 WdUnits 常量之一。默认值为 wdLine。
'可以是下列 WdUnits 常量之一:
'wdStory
'wdColumn
'wdLine
'wdRow 默认值是 wdLine
'Extend 可选参数 指定移动所选内容的方式。可以是任意 WdMovementType 常量。
'如果该参数值为 wdMove,则所选内容折叠到一个插入点中并移至指定单位的末尾。如果该参数值为 wdExtend,则所选内容的末尾扩展到指定单位的末尾,默认值为 wdMove。
◎案例:
'向文章开头写入内容。
Sub 向文章开头写入内容()
ActiveDocument.Range(0, 0).Select
Selection.TypeText "这是文章开头"
Selection.homekey wdStory
Selection.TypeText "这是文章开头"
End Sub
'向文章末尾写入内容
Sub 向文章末尾写入内容()
ActiveDocument.Range(ActiveDocument.Range.End - 1, ActiveDocument.Range.End).Select
Selection.TypeText "这是文章末尾"
Selection.EndKey wdStory
Selection.TypeText "这是文章开头"
End Sub
更多WordVBA知识,详见《WordVBA精讲课》
评论
5000w+ 的大表如何拆?亿级别大表拆分实战复盘
前言笔者是在两年前接手公司的财务系统的开发和维护工作。在系统移交的初期,笔者和团队就发现,系统内有一张5000W+的大表。跟踪代码发现,该表是用于存储资金流水的表格,关联着众多功能点,同时也有众多的下游系统在使用这张表的数据。进一步的观察发现,这张表还在以每月600W+的数据持续增长,也就是说,不超
码农编程进阶笔记
0
OpenUI:输入一段文字就能生成网!页!!
今天给大家介绍一个开源的 AI 网页生成工具:OpenUI!!!前言 在软件开发领域,用户界面(UI)的设计和构建确实是一个至关重要的环节。传统的 UI 开发需要设计师和开发人员紧密合作,通过反复的设计、修改和测试来达到理想的效果,这个过程往往耗时且成本较高。随着 AI 技术的发展,现在有越来越多的
前端技术江湖
0
浅谈几款XML文档解析工具以及优缺点
一、简介XML,一种可扩展标记语言,通常被开发人员用来传输和存储数据,定义也比较简单,通常如下方式开头,用来表述文档的一些信息。<?xml version="1.0" encoding="UTF-8"?>例如下面这个简单的文档。<?xml versio
Stephen
1
京东一面:浏览器跨标签页通信的方式都有什么?
作者:Momenthttps://juejin.cn/post/7270155117705510968跨标签通信也有很多实际的应用场景,比如:共享登录状态:当用户在一个标签页中登录后,其他打开的标签页需要及时获取到登录状态,以保持一致的用户体验。在这种情况下,可以使用浏览器的localStorage
前端大学
0
Python也可以合并和拆分PDF,批量高效!
PDF是最方便的文档格式,可以在任何设备原样且无损的打开,但因为PDF不可编辑,所以很难去拆分合并。知乎上也有人问,如何对PDF进行合并和拆分?看很多回答推荐了各种PDF编辑器或者网站,确实方法比较多。但这种软件的弊端在于很难去批量操作,比如你有几百个PDF要合并,使用软件会非常麻烦。而且很多软件是
Python大数据分析
14
Python-Docx:Word与Python的完美结合
今天给大家分享Python处理Word的第三方库:Python-Docx。什么是Python-Docx?Python-Docx是用于创建和更新Microsoft Word(.docx)文件的Python库。日常需要经常处理Word文档,用Python的免费第三方包:Python-Docx处理docx
机器学习算法与Python实战
10
使用 OpenCV 构建文档扫描仪
点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达介绍在本文中,我们将使用 OpenCV 库来开发 Python 文档扫描器。OpenCV 的简要概述: OpenCV 是一个开源库,用于各种计算机语言的图像处理,包括 Python、C++ 等。它可用于检测照片(例如使用人脸检测系
小白学视觉
10
没想到ai辅助我做app引导页,能这么成功,进大厂的梦想不远了!
今天是UI课同学们的app引导页作业,大家依然进步很大,结合ai来实现引导页,真的是太快了,而且质量都很高,先给大家展示一波大家的优秀作品吧: 有这么多优秀的作品,那必须还得来点干货啊,上菜! 01 画面层次单薄...
菜心设计铺
0