[黑科技] WPS通过VB宏函数实现自编号功能
来源:互联网 发布:3des算法的c语言实现 编辑:程序博客网 时间:2024/09/21 06:36
这篇文章主要是作为李老师《算法设计与分析》助教课程中,与她交流,学到的一些基础知识。它主要是讲述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:=wdLineEnd SubSub MoveToCurrentLineEnd() ' 移动光标至当前行尾 ' Selection.EndKey wdLine Selection.EndKey unit:=wdLineEnd SubSub SelectToCurrentLineStart() ' 选择从光标至当前行首的内容 ' Selection.HomeKey wdLine, wdExtend Selection.HomeKey unit:=wdLine, Extend:=wdExtendEnd SubSub SelectToCurrentLineEnd() ' 选择从光标至当前行尾的内容 ' Selection.EndKey wdLine, wdExtend Selection.EndKey unit:=wdLine, Extend:=wdExtendEnd SubSub SelectCurrentLine() ' 选择当前行 ' Selection.HomeKey wdLine ' Selection.EndKey wdLine, wdExtend Selection.HomeKey unit:=wdLine Selection.EndKey unit:=wdLine, Extend:=wdExtendEnd SubSub MoveToDocStart() ' 移动光标至文档开始 ' Selection.HomeKey wdStory Selection.HomeKey unit:=wdStoryEnd SubSub MoveToDocEnd() ' 移动光标至文档结尾 ' Selection.EndKey wdStory Selection.EndKey unit:=wdStoryEnd SubSub SelectToDocStart() ' 选择从光标至文档开始的内容 ' Selection.HomeKey wdStory, wdExtend Selection.HomeKey unit:=wdStory, Extend:=wdExtendEnd SubSub SelectToDocEnd() ' 选择从光标至文档结尾的内容 ' Selection.EndKey wdStory, wdExtend Selection.EndKey unit:=wdStory, Extend:=wdExtendEnd SubSub SelectDocAll() ' 选择文档全部内容(从WholeStory可猜出Story应是当前文档的意思) Selection.WholeStoryEnd SubSub MoveToCurrentParagraphStart() ' 移动光标至当前段落的开始 ' Selection.MoveUp wdParagraph Selection.MoveUp unit:=wdParagraphEnd SubSub MoveToCurrentParagraphEnd() ' 移动光标至当前段落的结尾 ' Selection.MoveDown wdParagraph Selection.MoveDown unit:=wdParagraphEnd SubSub SelectToCurrentParagraphStart() ' 选择从光标至当前段落开始的内容 ' Selection.MoveUp wdParagraph, wdExtend Selection.MoveUp unit:=wdParagraph, Extend:=wdExtendEnd SubSub SelectToCurrentParagraphEnd() ' 选择从光标至当前段落结尾的内容 ' Selection.MoveDown wdParagraph, wdExtend Selection.MoveDown unit:=wdParagraph, Extend:=wdExtendEnd SubSub SelectCurrentParagraph() ' 选择光标所在段落的内容 ' Selection.MoveUp wdParagraph ' Selection.MoveDown wdParagraph, wdExtend Selection.MoveUp unit:=wdParagraph Selection.MoveDown unit:=wdParagraph, Extend:=wdExtendEnd SubSub DisplaySelectionStartAndEnd() '显示选择区的开始与结束的位置,注意:文档第1个字符的位置是0 MsgBox ("第" & Selection.Start & "个字符至第" & Selection.End & "个字符")End SubSub DeleteCurrentLine() ' 删除当前行 ' Selection.HomeKey wdLine ' Selection.EndKey wdLine, wdExtend Selection.HomeKey unit:=wdLine Selection.EndKey unit:=wdLine, Extend:=wdExtend Selection.DeleteEnd SubSub DeleteCurrentParagraph() ' 删除当前段落 ' Selection.MoveUp wdParagraph ' Selection.MoveDown wdParagraph, wdExtend Selection.MoveUp unit:=wdParagraph Selection.MoveDown unit:=wdParagraph, Extend:=wdExtend Selection.DeleteEnd Sub
最后希望文章对你有所帮助,如果文章中存在错误或不足之处,还请海涵~后面肯恩会补充一些实用的功能,娜美人生,精彩人生。
(By:Eastmount 2017-03-15 中午1点 http://blog.csdn.net/eastmount/)
- [黑科技] WPS通过VB宏函数实现自编号功能
- 如何实现自编号
- 如何实现自编号
- 利用SQLServer用户自定义函数实现编号自增长
- C/C++:scanf函数的黑科技
- Vb.net/VB 声明API函数实现父窗体功能
- Vb.net/VB 声明API函数实现父窗体功能
- Spring“黑科技”---实现数据库信息加密
- 黑科技
- 黑科技
- 黑科技
- 《黑科技》
- WPS为公式编号
- EhLib实现自动编号功能
- 黑科技——通过docker+xware在群辉DSM 6.0系统实现迅雷远程下载
- 支付宝又出黑科技,停车场不停车通过
- openwrt-wps功能的实现(一)
- 通过PHP pcntl函数实现多线程功能
- 如何解决ajax跨域问题(转)
- 3.4. JVM Agent
- javaFX 子线程更新主线程UI
- 筋斗云接口编程 / 子表对象
- 乘法逆元的作用
- [黑科技] WPS通过VB宏函数实现自编号功能
- 机器学习数据集
- 筋斗云接口编程 / 虚拟表和视图
- Windows添加鼠标右键打开方式
- VB二进制文件读写
- bzoj3300
- Unity3D 高效率查找子物体(孩子比较多 需要查找的物体比较多的时候)
- vs2013中能编译通过,但是会有红色波浪线错误
- 筋斗云接口编程 / 接口返回前回调