VBA还能这么玩?Word文档一秒自动排版

news/2024/7/21 6:47:28 标签: word, vba, office, excel,

Hello,各位小伙伴们大家好呀,真的是好久不见了。旅行者1号也才用20个小时回传数据到地球。距离 Yogurt 上次正儿八经的教程推文已经快 700 天了,时间过得真快呀,感谢各位的不离不弃。
在这里插入图片描述

这两天群里比较活跃,便上去看看发生了啥事儿,不看不知道,一看,这推文的素材不就来了嘛,嘿嘿。

有一个 @小婷子 的群友在群里求助

在这里插入图片描述

大致了解完需求之后,虽然 Word & VBA 不是很熟,但理论上大致都是相通的,查阅了一下文档,三下五除二就搞定啦。下面是 Yogurt 在这不到 1 个小时的时间里的解决过程,请各位看官笑纳。

国际惯例,先将最终效果图奉上:

废话不多说,让我们开始本期的 VBA 之旅。

1 分析需求

在这里插入图片描述

上图是 @小婷子 在群里提供的代码示例,联系上下文以及个人经验,感觉她应该是有一个自动排版的需求。后面追问一下,果不其然,要改十几篇 Word 文档的格式。这种重复性的工作太烦人了。

在这里插入图片描述
联系上下文,确定下来咱们要开发的需求——根据特定的文本标识自动设置段落样式。特定的文本标识如下:

  • 段落开头为 [一、][二、][三、] …… 等等的标识的为一级标题
  • 段落开头为 [(一)][(二)][(三)] …… 等等的标识的为二级标题

其余情况为正文

OK,需求明确了,就可以开始写代码了。

2 准备工作

首先我们先打开 Word。

在这里插入图片描述

然后将其保存为 .docm 格式——启用的 Word 文档。

在这里插入图片描述

这里 Yogurt 演示使用的是 Office 2021,Office 2007 版本以上 Office 操作基本大同小异,只是保存时弹出的窗口有所差别,大家注意一下保存的文件类型即可。

保存好之后,咱们需要打开 VBA 编辑界面。虽然是在 Word 里面,但我们依然可以使用 Alt + F11 这个丝滑小连招,唤出 VBA 编辑器。

在这里插入图片描述

然后照例先创建一个 模块 ,在对象 ThisDocment 处点击鼠标右键,依次点击: 插入 > 模块

在这里插入图片描述

在这里插入图片描述

然后咱们就回到了 Excel VBA 那熟悉的感觉了。

接着咱们准备点测试用的素材。如下图:

在这里插入图片描述

把咱们要测试的内容简简单单地放上去。

3 编写代码

3.1 读取所有段落

需求里提到,每个段落按照指定的段落标识设置段落的样式,那么根据需求,我们刚刚准备好的测试素材处理完之后应该长这样:

在这里插入图片描述

那么我们需要通过 VBA 先将每个段落的内容读取出来。

在这里插入图片描述

word">Option Explicit

word">Sub 自动排版()
    word">Dim item word">As Variant
    word">For Each item word">In ThisDocument.Paragraphs
        word">Dim pItem word">As Paragraph
        word">Set pItem = item
        Debug.Print pItem.Range.

http://www.niftyadmin.cn/n/5133785.html

相关文章

DAMNets

方法 体会 实验充分,不愧是ICLR,但作者未提供代码

jvm对象内存划分

写此篇博客源于面试问到内存分配的细节,然后不明白问的是什么。回过头发现以前看过这块内容,只是有些印象,但是无法描述清楚。 额外概念了解 jvm内存空间是逻辑上连续的虚拟地址空间(虚拟内存中的概念)映射到物理内存…

【C++指针】函数返回指针类型 与 函数返回引用类型(关于获取局部变量的操作)

错误示范 #include <bits/stdc.h> using namespace std;int* RetPtr(void) { //函数返回指针类型int tempData1 1; //函数执行完后&#xff0c;这个变量的生命周期结束&#xff0c;变量的内存被系统收回cout << "第一个函数中值的地址为&#xff…

SQL Wildcards 通配符

SQL Wildcards 通配符 通配符用于替换字符串中的任何其他字符。 通配符与 SQL LIKE 运算符一起使用。在 WHERE 子句中使用LIKE运算符来搜索列中的指定模式。 有两个通配符与 LIKE 运算符一起使用&#xff1a; &#xff05; - 百分号表示零个&#xff0c;一个或多个字符_ - 下…

lstm时间序列预测python

要使用Python进行LSTM时间序列预测&#xff0c;你可以使用Keras库。以下是一个简单的示例&#xff1a; 首先&#xff0c;安装Keras库&#xff1a; pip install keras 然后&#xff0c;创建一个Python脚本并导入所需的库&#xff1a; import numpy as np from keras.models im…

Jetpack:020-Jetpack导航示例:底部导航栏

文章目录 1. 概念介绍2. 使用方法3. 代码与分析3.1 示例代码3.2 代码分析 4. 内容总结 我们在上一章回中介绍了Jetpack中导航相关的内容&#xff0c;本章回中主要介绍 导航的综合示例&#xff1a;底部导航栏。闲话休提&#xff0c;让我们一起Talk Android Jetpack吧&#xff0…

代码审计-锐捷EG易网关 管理员账号密码泄露漏洞

出现漏洞的文件在 /login.php 审查源码我们发现通过命令拼接的方式构造命令执行 发送请求包&#xff0c;拼接 CLI指令 show webmaster user /login.php usernameadmin&passwordadmin?showwebmasteruser漏洞证明&#xff1a; 文笔生疏&#xff0c;措辞浅薄&#xff0c;望…

SOLIDWORKS Simulation2024仿真10大新功能

SOLIDWORKS Simulation新增功能 1. 增强型轴承接头 •通过指定压缩、拉伸和弯曲的刚度&#xff0c;轻松创建自定义轴承接头。•通过向非线性和大型位移算例添加自定义条件&#xff0c;提高模拟精度。 优点&#xff1a;使用功能强大的接口&#xff0c;更轻松 、 更 准 确 地 设…