[黑科技] WPS通过VB宏函数实现自编号功能

2023-10-27

这篇文章主要是作为李老师《算法设计与分析》助教课程中,与她交流,学到的一些基础知识。它主要是讲述Word通过宏函数设置一些操作,比如在Word全文中替换一些符号;再如对Word上角表进行编号,如果删除中间某个值,运行宏函数自动编号;对Word中所有图片进行大小统一整合;文章竖着排版等操作。Word宏函数主要是基础VB编写的,希望这篇文章对你有所帮助~


一. WPS实现宏函数可用

Office中Word的宏函数直接可以使用,而WPS需要安装一个软件后才能使用。打开WPS Word如下图所示,宏是不能使用的。



这时需要下载VBA for WPS并安装才能使用。下载地址:
https://yun.baidu.com/share/link?shareid=2773182689&uk=892671164
下载安装如下图所示:


安装完后可以设置宏函数,如下图所示:


点击"宏",然后"创建"宏函数,如下图所示,取名为test。



创建后如下图所示,可以看到是VB代码进行编写的。

WPS需要保存为带宏函数的格式,如下图所示。


然后运行宏函数如下图所示,点击"运行"即可,如下图所示。


这里,如果想好好研究这个,可以看看VB一些基础书籍,程序就那回事。我简单看了《VB从入门到精通》后,开始写相应功能的。



二. 编写宏函数实现自编号

Visual Basic支持一个对象集合,该集合中的对象直接对应于Microsoft Word 97中的元素,并且通过用户界面,用户熟悉这些元素中的绝大多数。

例如,Document 对象代表了一个打开的文档,Bookmark对象代表了一个文档中的书签,而Selection对象则代表了在一个文档窗口窗格中的选定内容。在Word中,每一类元素-文档、表格、段落、书签、域等等-都可以用Visual Basic的对象来表示。要在Word中自动执行任务,可以使用这些对象的方法和属性。


下面简单讲解宏函数实现一些功能。

Sub test()
'
' test Macro
'

    Dim sLineNum3 As String     '行号(文字)
    Dim nLineNum                '行号(数值)
    Dim i As Long
 
    Title = "输入编号信息"
    a1 = "请输入总编号开始号:"
    b1 = InputBox(a1, Title)
     
End Sub
运行宏函数如下图所示:


运行结果如下图所示,弹出界面输入:



下面是完整的代码,如下所示:

Sub test()
'
' test Macro
'

    '定义变量
    Dim sLineNum3 As String     '行号(文字)
    Dim nLineNum                '行号(数值)
    Dim sLineNum As String      '行号(文字)
    Dim sLineNum1 As String     '行号(文字)
    Dim sLineNum2 As String     '行号(文字)
    Dim selRge As Range
    Dim i As Long
    Dim x As Long
    Dim y As Long
    Dim k As Long
 
 
    '输入行号对话框
    Title = "输入编号信息"
    a1 = "请输入总编号开始号:"
    b1 = InputBox(a1, Title)

    'Val函数将数字字符串换成数值
    y = 200000 + Val(b1) - 1
    
    
    i = 1
    For k = 1 To 20
        sLineNum1 = Str(i + y)            '200001
        sLineNum1 = LTrim(sLineNum1)      '移除字符串最左边的空白字符
        sLineNum1 = Right(sLineNum1, 5)   '生成行号格式"00001"
        
        '行号前加"/"
        'sLineNum = "/" & b2 & sLineNum
        'sLineNum2 = sLineNum1 + sLineNum
        sLineNum2 = sLineNum1
        
   
        '移动光标至当前行首 Selection.HomeKey wdLine
        Selection.HomeKey Unit:=wdLine
        '选择从光标至当前行首的内容 Selection.HomeKey wdLine, wdExtend
        Selection.EndKey Unit:=wdLine, Extend:=wdExtend
    
        sLineNum3 = Selection.Text
        sLineNum3 = Left(sLineNum3, 3)    '从左边获取每行前3个字符
        If sLineNum3 = "%%%" Then         '替换行号
            Selection.Find.Execute FindText:="%%%", ReplaceWith:=sLineNum2
            i = i + 1
        End If
        Selection.MoveDown Unit:=wdLine, Count:=1
 
       Next k
     
End Sub
现在Word中内容如下所示:

然后运行"宏",运行如下所示:



运行结果如下图所示:


下面补充一些代码,常见的操作Word宏的 函数。
参考:http://wangye.org/blog/archives/135/
          http://blog.sina.com.cn/s/blog_5e646c1f0100u24w.html
 

Sub MoveToCurrentLineStart()
  ' 移动光标至当前行首
  ' Selection.HomeKey wdLine
  Selection.HomeKey unit:=wdLine
End Sub
Sub MoveToCurrentLineEnd()
  ' 移动光标至当前行尾
  ' Selection.EndKey wdLine
  Selection.EndKey unit:=wdLine
End Sub
Sub SelectToCurrentLineStart()
  ' 选择从光标至当前行首的内容
  ' Selection.HomeKey wdLine, wdExtend
  Selection.HomeKey unit:=wdLine, Extend:=wdExtend
End Sub
Sub SelectToCurrentLineEnd()
  ' 选择从光标至当前行尾的内容
  ' Selection.EndKey wdLine, wdExtend
  Selection.EndKey unit:=wdLine, Extend:=wdExtend
End Sub
Sub SelectCurrentLine()
  ' 选择当前行
  ' Selection.HomeKey wdLine
  ' Selection.EndKey wdLine, wdExtend
  Selection.HomeKey unit:=wdLine
  Selection.EndKey unit:=wdLine, Extend:=wdExtend
End Sub
Sub MoveToDocStart()
  ' 移动光标至文档开始
  ' Selection.HomeKey wdStory
  Selection.HomeKey unit:=wdStory
End Sub
Sub MoveToDocEnd()
  ' 移动光标至文档结尾
  ' Selection.EndKey wdStory
  Selection.EndKey unit:=wdStory
End Sub
Sub SelectToDocStart()
  ' 选择从光标至文档开始的内容
  ' Selection.HomeKey wdStory, wdExtend
  Selection.HomeKey unit:=wdStory, Extend:=wdExtend
End Sub
Sub SelectToDocEnd()
  ' 选择从光标至文档结尾的内容
  ' Selection.EndKey wdStory, wdExtend
  Selection.EndKey unit:=wdStory, Extend:=wdExtend
End Sub
Sub SelectDocAll()
  ' 选择文档全部内容(从WholeStory可猜出Story应是当前文档的意思)
  Selection.WholeStory
End Sub
Sub MoveToCurrentParagraphStart()
  ' 移动光标至当前段落的开始
  ' Selection.MoveUp wdParagraph
  Selection.MoveUp unit:=wdParagraph
End Sub
Sub MoveToCurrentParagraphEnd()
  ' 移动光标至当前段落的结尾
  ' Selection.MoveDown wdParagraph
  Selection.MoveDown unit:=wdParagraph
End Sub
Sub SelectToCurrentParagraphStart()
  ' 选择从光标至当前段落开始的内容
  ' Selection.MoveUp wdParagraph, wdExtend
  Selection.MoveUp unit:=wdParagraph, Extend:=wdExtend
End Sub
Sub SelectToCurrentParagraphEnd()
  ' 选择从光标至当前段落结尾的内容
  ' Selection.MoveDown wdParagraph, wdExtend
  Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
End Sub
Sub SelectCurrentParagraph()
  ' 选择光标所在段落的内容
  ' Selection.MoveUp wdParagraph
  ' Selection.MoveDown wdParagraph, wdExtend
  Selection.MoveUp unit:=wdParagraph
  Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
End Sub
Sub DisplaySelectionStartAndEnd()
  '显示选择区的开始与结束的位置,注意:文档第1个字符的位置是0
  MsgBox ("第" & Selection.Start & "个字符至第" & Selection.End & "个字符")
End Sub
Sub DeleteCurrentLine()
  ' 删除当前行
  ' Selection.HomeKey wdLine
  ' Selection.EndKey wdLine, wdExtend
  Selection.HomeKey unit:=wdLine
  Selection.EndKey unit:=wdLine, Extend:=wdExtend
  Selection.Delete
End Sub
Sub DeleteCurrentParagraph()
  ' 删除当前段落
  ' Selection.MoveUp wdParagraph
  ' Selection.MoveDown wdParagraph, wdExtend
  Selection.MoveUp unit:=wdParagraph
  Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend
  Selection.Delete
End Sub


        最后希望文章对你有所帮助,如果文章中存在错误或不足之处,还请海涵~后面肯恩会补充一些实用的功能, 娜美人生,精彩人生。
      (By:Eastmount 2017-03-15 中午1点    http://blog.csdn.net/eastmount/  


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[黑科技] WPS通过VB宏函数实现自编号功能 的相关文章

  • word(doc,docx)转换为HTML

    maven
  • 如何在visio2010的框图中插入公式?

    如何在visio2010的框图中插入公式 其实很简单 也没必要下载Mathtype 先在world中用自带的公式编辑器将公式写好 如下图 此时选中公式 博文已经迁移到个人主页https guangmujun cn archives 143
  • python操作word表格,并修改表格内容

    1 安装win32com client库 pip install pywin32 2 导包 import win32com client 3 总代码 import os import win32com client 创建 Word 应用程序
  • 分了很多节的word文档,使用尾注插入的参考文献,最后怎么在参考文献之后加入致谢?

    转自 点击打开链接 需要设置一下 1 设置尾注的位置 引用 脚注 按这个功能区分组右下角的功能展开按钮 调出 脚注和尾注 设置对话框 在 位置 下 尾注 后选择 节的结尾 2 从第一节开始分别取消各节的 尾注 直到 参考文献 这节 页面布局
  • 论文排版:Word加入脚注后,分栏的正文就跑到下一页上去了的解决方案

    在论文排版中 在题目或作者处插入了脚注后 再对正文分栏时 或者先分栏 再在题目或作者处插入脚注 分栏后的正文就跑到下一页上去了 这个问题 我抓狂了很久 终于在搜索若干关键字后得以解决 情况一 稿件格式的要求 1 题目和摘要部分不分栏 正文部
  • 西门子PPI通讯协议

    过硬件和软件侦听的方法 分析PLC内部固有的PPI通讯协议 然后上位机采用VB编程 遵循PPI通讯协议 读写PLC数据 实现人机操作任务 这种通讯方法 与一般的自由通讯协议相比 省略了PLC的通讯程序编写 只需编写上位机的通讯程序资源S7
  • java实现将数据导出为word功能(文字,表格,图片的循环导出)

    1 配置文件的准备 1 导出功能实现所需要的pom文件
  • VB中实现ASP中Server.URLEncode与Server.URLDecode

    在HTTP协议中 浏览器不能向服务器直接传递某些特殊字符 就必须对这些字符进行URL编码再传送 浏览器一般会以 UTF 8 和 ANSI 当前系统语言设置 两种方式发送 URL 到服务器 例如 在 baidu 中搜索中国的结果 http w
  • 不要再狂按空格键了!Word 里文字对齐推荐这4种方法

    到底如何才能快速对齐Word文字呢 今天就教大家4个好方法 不用敲空格键 2秒对齐所有文字 1 Tab键对齐 首先选中要对齐的文本 点击 视图 选中 标尺 在文字需要对齐的位置设置 制表位 接着鼠标点击文本前 然后再按一个 Tab键 立马就
  • 十万行代码!!!

    前些天 看到网上雷军写的一篇好象是叫给程序员的几个建议 说到程序员必须要写够十万行代码才能成为高手 不要心存侥幸 于是我回来计算了一下我的程序 不算不知道 一算吓一跳 居然有超过9万行的代码 如果不算表单属性等 也有45000多行纯代码 这
  • 访谈:小学学历的程序员自主研发出框架级产品

    提到许松森 也许你并不知道他是谁 在Google中敲入这个名字 能找到的结果也寥寥无几 那么做为我们这一期采访的主角 他究竟是用什么在吸引着我们呢 打开许松森的blog 开篇就是 我的悲惨人生 读在字里行间 对他在逆境中的自我成长很是敬佩
  • word添加gif

    word添加gif动图最简单的方法 无需链接无需插件 X to Y的博客 CSDN博客 word插入动图 原文链接 https blog csdn net X To Y article details 124415532 文章目录 word
  • 解决word中公式与右编号上下不居中的问题

    1 如图所示 选中右编号敲击公式后 公式与右编号上下不居中 2 在开始 样式 中找到如下图所示的样式 右击 修改 3 进入段落 修改如下图示 然后点击确定 在应用修改后的样式 就好了
  • Java准确获取Word/Excel/PPT/PDF的页数(附Word页数读不准的处理办法)

    Java准确获取Word Excel PPT PDF的页数 附Word页数读不准的处理办法 1 需求背景 2 环境准备工作 2 1 JACOB介绍及安装 2 2 Microsoft Office Word的设置 3 代码 3 1 代码示例
  • VB中Shell和ShellExecute函数的使用方法和区别

    写了一个vb的程序 用来把原来写的几个vb和vc的程序整合起来 就是使用Shell函数 结果发现 vc的程序可以很好的显示 但vb写的却一运行就最小化了 仔细查看了一下以下文章 才发现原来shell函数的默认显示模式是windowstyle
  • 不能安装64位office提示已安装32位的

    问题描述 安装64位office办公软件的时候提示已经安装32位的office办公软件所以无法继续安装 但实际上之前安装的32位的office办公软件已经卸载了 问题现象截图如下 解决办法 从问题描述中 我们其实已经能够看出问题原因了 类似
  • word页码如何设置为章节加页码,例如第一章第一页1-1、第二章第一页2-1

    由于用到word页码分章节 页码的形式 从网上查了一下 质量真的很差 没有一篇文章讲清楚的 有的所答非所问 一怒之下 利用几个小时的时间解决问题并写下这篇文章 以供大家学习参考 1 word插入页码 选择包含章节号 1 1 双击页脚 点击插
  • 仅需三步就可以把代码块完美插入到word中

    还在为在word中呈现代码而烦恼吗 如何在word中插入c 代码 如何在word中插入代码块 如何在word中完美的呈现代码 如何在word中对代码进行排版 来开始表演了 1 打开网站 http word wd1x com 支持c c ja
  • Java Word转PDF

    两种方式 documents4j groupdocs 一 documents4j 1 添加依赖
  • 每天都很煎熬,领导派的活太难,真的想跑路了

    每天都很煎熬 领导派的活太难 真的想跑路了 人在江湖身不由己 无论是领导的亲信还是团队的边缘 都可能遇到这种情况 不得不干一件特别难以推进的事情 茫然无措 不知如何推进 每天陷入焦虑和自我怀疑中 这种事情一般有一些共同特点 结果和目标极其模

随机推荐

  • BI数据分析方法小结

    author skate time 2011 04 06 对于电子商务网站 我们该如何对数据分析呢 当我们拿到数据的时候该做些什么 要回答这几个问题前 先回答如下问题 1 数据是给谁看的 2 看数据的人 想从数据中得到什么 或者用数据证明什
  • java创建类关键字_在Java中,可以使用关键字【】来创建类的实例对象

    摘要 特别叫量呼的海是对 使用关集中用于部过的局负荷控制 向某行试呼的个目特定制用制在某一来限段内的进次数时间g控 学院现重如发患全隐大安 创例对或发故全事生学生安 息 造作被坚决因信杜绝动成工 迅速向分管院告要在第一长报时间 使用关撞击角
  • Spring 如何使用JDK动态代理呢?

    转自 Spring 如何使用JDK动态代理呢 下文是笔者采用示例的方式讲述JDK动态代理的实现方法 如下所示 实现思路 Spring JDK 动态代理需要实现 InvocationHandler 接口 重写 invoke 方法 客户端使用
  • Spring 配置数据库用户名密码加密

    Spring 配置数据库用户名密码加密 传统形式配置数据库用户名密码 对于一般的spring框架 经常要用到数据源配置 如果是用xml配置的话 一般都是如下形式 数据库用户名密码密文配置实现 现在的需求是不能在配置文件里明文配置数据库用户名
  • 30 张快速学习 Java 的思维导图

    前两天一直给大家分享的是我的学习历程还有面试流程 希望能够帮助和鼓励到大家 今天我继续给大家分享我的一下学习的小方法 大家有兴趣的可以多看看 觉得还不错的就给我点点赞 今天给大家分享的是 Java 知识点总结的思维导图 整理成了这篇文章 帮
  • shell脚本练习1 ————10秒钟倒计时脚本

    root 1 cat time sh bin bash for i in 10 1 do clear echo n i echo n 不换行输出 sleep 1 done root 1 cat time sh bin bash for i
  • python print 打印不使用省略号

    import tensorflow as tf import os import numpy as np np set printoptions threshold np inf threshold 指定超过多少使用省略号 np inf代表
  • SQL语句基础介绍

    SQL语句基础介绍 SQL语句主要可以分为以下3个类别 DDL Data Definition Language 语句 数据定义语言 这些语句定义了不同的数据段 数据库 表 列 索引等数据库对象 常用的语句关键字主要包括create dro
  • js 获取url 携带的参数

    window location 对象所包含的属性 hash 从井号 开始的 URL 锚 host 主机名和当前 URL 的端口号 hostname 当前 URL 的主机名 pathname 当前 URL 的路径部分 href 完整的 URL
  • 【Flutter 1-12】Flutter手把手教程Dart语言——什么是泛型和泛型的使用场景

    作者 弗拉德 来源 弗拉德 公众号 fulade me 泛型 如果你查看数组的API文档 你会发现数组List的实际类型为List
  • java:面向对象(Object类-equals()).

    Obeject 是所有对象的直接后者间接父类 传说中的上帝 该类中定义的肯定是所有对象都具备的功能 我们写这样一个代码 class Demo class ObjectDemo public static void main String a
  • nginx隐藏版本号及nginx

    查看nginx安装了哪些插件 nginx V 停止并卸载老的nginx systemctl stop nginx ps ef grep nginx 备份老的配置 find name nginx mv etc logrotate d ngin
  • Unity Dotween插件的运动曲线(Ease)介绍Ease选项Ease效果示例以及C#修改动画曲线功能

    前言 我们在制作动画时经常使用这个Dotween插件 在移动 旋转 透明度等等参数的控制都可以使用该插件 而且在这个插件上的控制动画可以设置曲线 内置的曲线有这些 内置曲线 以InOutSine的曲线进行往右移动 效果是这样的 能看出开始是
  • 解析Exception和C#处理Exception的常用方法总结

    在 NET中 异常是指成员没有完成它的名称宣称可以完成的行动 在异常的机制中 异常和某件事情的发生频率无关 异常处理四要素包括 一个表示异常详细信息的类类型 一个向调用者引发异常类实例的成员 调用者的一段调用异常成员的代码块 调用者的一段处
  • 综合评价方法

    文章目录 1 综合评价概述 1 1 基本概念 1 2 综合评价问题的五个要素 1 3 综合评价方法的思路 1 4 常用综合评价方法 2 确定权重类 2 1 信息浓缩 因子分析和主成分分析 2 2 数字相对大小 层次分析法 2 3 信息量 熵
  • Linux下查看软件安装路径

    Linux下查看软件安装路径 1 查询软件安装路径 在Linux操作系统中查看软件安装路径是通过whereis 命令 如查看sshd软件的安装路径时输入命令 whereis sshd sshd usr sbin sshd usr share
  • [创业之路-61] :创业者(老板)与职场(经理人)的区别(身份、职责、专业技能、行为模式)

    在职场中 创业者和职场人的行为有重大的区别 职场人从打工到创业 行为方式也需要发生重大的转变 这里以职业经理人泛指所有的职场人 本文就是探讨这个差别和自己的心路感悟 一 身份不同 创业者老板 自己独自成立或者和别人一起成立一家公司 其通过公
  • GAME Kit开发记录

    2D Game Kit开发记录 作为一款经典的2D游戏 seeker的构成用到了很多U3D中常用的手法和操作 其中包括角色移动 攻击 不同地形的材质处理 机关的触发 敌人系统 以及UI设置等 1 建立场景 作为整个游戏的基础 场景是玩家进入
  • ES6 Module 模块

    文章目录 ES6 module模块 概述 使用 export default 和 import 方式一 导出变量 方式二 导出方法 方式三 导出对象 export 和 import 方式一 方式二 别名 导出别名 导入别名 整体别名 exp
  • [黑科技] WPS通过VB宏函数实现自编号功能

    这篇文章主要是作为李老师 算法设计与分析 助教课程中 与她交流 学到的一些基础知识 它主要是讲述Word通过宏函数设置一些操作 比如在Word全文中替换一些符号 再如对Word上角表进行编号 如果删除中间某个值 运行宏函数自动编号 对Wor