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

news/2024/11/30 1:45:13/

这篇文章主要是作为李老师《算法设计与分析》助教课程中,与她交流,学到的一些基础知识。它主要是讲述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 LongTitle = "输入编号信息"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 RangeDim i As LongDim x As LongDim y As LongDim k As Long'输入行号对话框Title = "输入编号信息"a1 = "请输入总编号开始号:"b1 = InputBox(a1, Title)'Val函数将数字字符串换成数值y = 200000 + Val(b1) - 1i = 1For k = 1 To 20sLineNum1 = Str(i + y)            '200001sLineNum1 = LTrim(sLineNum1)      '移除字符串最左边的空白字符sLineNum1 = Right(sLineNum1, 5)   '生成行号格式"00001"'行号前加"/"'sLineNum = "/" & b2 & sLineNum'sLineNum2 = sLineNum1 + sLineNumsLineNum2 = sLineNum1'移动光标至当前行首 Selection.HomeKey wdLineSelection.HomeKey Unit:=wdLine'选择从光标至当前行首的内容 Selection.HomeKey wdLine, wdExtendSelection.EndKey Unit:=wdLine, Extend:=wdExtendsLineNum3 = Selection.TextsLineNum3 = Left(sLineNum3, 3)    '从左边获取每行前3个字符If sLineNum3 = "%%%" Then         '替换行号Selection.Find.Execute FindText:="%%%", ReplaceWith:=sLineNum2i = i + 1End IfSelection.MoveDown Unit:=wdLine, Count:=1Next kEnd Sub
现在Word中内容如下所示:

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



运行结果如下图所示:


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

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


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



http://www.ppmy.cn/news/774185.html

相关文章

这可能是冬奥会藏得最深的黑科技了

鱼羊 明敏 发自 凹非寺量子位 | 公众号 QbitAI 大家好,我们又来蹭冬奥会热度了(手动狗头)。 毕竟啊,这届冬奥不仅赛事精彩,背后频频曝出的黑科技也让人应接不暇填满了选题小黑板。 从开幕式上的“步步生雪花”&#xf…

世界经论坛狂飚黑科技 直击2017大连达沃斯

来自20多个国家的2000多名各行业专家会集大连,参加200多场论坛,这些论坛的场里场外成了狂飚未来黑科技赛场。这就是我对我正在采访的2017达沃斯全球经济论坛深刻感受。 啊,我好久沒有闻道海风的腥味,我贪婪地呼吸着这让人神怡清醒…

IBM 人工智能黑科技

打开IBM官网,意外发现IBM Research Lab发布了今年的未来5年将发生的五项创新 - The Power of Thinking Big: IBM Researchs "5 in 5"。五项创新均与目前热门的人工智能、纳米科技、IoT物联网、医疗大数据、环境污染检测等息息相关! With AI, …

Java黑科技之源:JVMTI完全解读

Java生态中有一些非常规的技术,它们能达到一些特别的效果。这些技术的实现原理不去深究的话一般并不是广为人知。这种技术通常被称为黑科技。而这些黑科技中的绝大部分底层都是通过JVMTI实现的。 形象地说,JVMTI是Java虚拟机提供的一整套后门。通过这套后…

【时间之外】2021年这些伪黑科技概念要提防

现在有些人喜欢玩概念,不做#时间的朋友#,下面简单梳理一下2021年需要提防的伪黑科技概念,无论是就业还是投资,都需要了解一下。 目录 1、AR/VR虚拟现实 2、智能音箱 3、挖孔手机屏 4、智能眼镜 5、有线充电器 6、高清电视盒…

盘点 | 2017年,哪些黑科技改变了我们的生活?

时光如梭,一眨眼的功夫2017 年还剩个尾巴,虽然年初自己许下的愿望还完成几个,但这个世界,过去一年很多事儿,让人拍案叫绝。比如以 AlphaGo、 机器人索菲亚为代表的人工智能,还有无人驾驶、无人超市、人脸识…

到数博会看“2017十大黑科技”

这界数博会一个很有意思的点就是“黑科技“众多,为此组委会还专门评选出了“2017十大黑科技”。那么问题来了,到底什么是黑科技呢,怎样才能算是黑科技?这界数博会都有哪些黑科技?这些黑科技又“黑“在哪呢?为此,我们对这次的“…

CSS.黑科技

1、利用 CSS 的 content 属性 attr 抓取资料