这一节想作的学习汇报主要想讲下关于字符串的处理,这个往往是我们在程序处理中的关键问题,因为所有的信息最终往往是以字符串的形式进行传达,所以,我们一定要掌握好字符串的处理. 而字符串的处理中,比较常见的就是使用正则表达式来处理了,这一节就从普通的搜索讲起,再讲到VB中的正则表达式,这里也是只做一个大概的示范,而正则表达式的使用也不是本节能够讲得清的,如果已经掌握的可以忽略, 如果有不了解的同学,可以去专门讲解正则表达式的地方进行学习

  • 首先我们先上图, 在工具页面新建一个框架和两个输入框以及两个按钮,然后把按钮的标题改成文本搜索正则搜索,而他们的名称后面,我们加上下划线_以及我们能看得懂的拼音字符wenBenSouSuo,保留前面的名称是因为是自动生成的,是程序中本来的名称而且带了编号很方便我们了解这个是第几个按钮了,而后面的拼音是为了让我们作者自己能直观的从这个名称上了解这个按钮的意义,所以还特意把每个文字的首字母进行大写处理,另一个也是同理.
  • 然后分别双击这两个两个按钮进入按钮的点击事件

然后上代码:

Private Sub CommandButton4_wenBenSouSuo_Click()If ActiveDocument.FilePath <> "" ThenFileName = ActiveDocument.NameIf InStr(FileName, UserForm1.TextBox3.Value) > 0 ThenMsgBox "文件名中含有" & Chr(34) & UserForm1.TextBox3.Value & Chr(34)ElseMsgBox "文件名中不包含该内容"End IfElseMsgBox "当前文件名不存在"End If
End SubPrivate Sub CommandButton5_zhenZeSouSuo_Click()If ActiveDocument.FilePath <> "" ThenDim objRegEx As Object, FileName As StringFileName = ActiveDocument.NameSet objRegEx = CreateObject("vbscript.regexp")objRegEx.Pattern = ".*?(" & UserForm1.TextBox4.Value & ").*"objRegEx.Global = TrueSet objMH = objRegEx.Execute(FileName)If objMH.Count > 0 Thensubm0 = objMH(0).submatches(0)Set objRegEx = NothingMsgBox "当前匹配正则中的内容为" & subm0ElseMsgBox "匹配失败"End IfElseMsgBox "当前文件名不存在"End If
End Sub

演示:

代码浅释:
首先获取当前的文件名ActiveDocument.Name储存在FileName当中,然后判断一下文件名当中有没有输入框TextBox3的值Value,如果匹配到了的话,InStr会返回一个匹配的第一次的位置也就是下标,所以如果匹配上了一定是个正数,所以用了>0,未匹配上就是0

后面关于正则表达式
首先设置一下objRegEx为一个对象Object,然后让他Set objRegEx = CreateObject("vbscript.regexp"),让它赋值为一个新建的对象VB脚本(script就是脚本的意思)中的regexp(regexp就是正则的意思)
Pattern 是就是正则表达式的匹配式子储存的地方
Global 是全局匹配的意思,如果是true的话 当匹配上了第一个之后程序仍然会再搜索第二次
Execute是在某字符串里面执行正则搜索的函数功能, 后面的括号里面填上需要被搜索的字符串,因为带了括号,所以是有返回值的,所以用objMH 来储存这个对象,这个对象里面有两个属性,其中一个是Count 记录了匹配总数,所以我们就可以用来检测匹配成功与否,所以>0就是成功匹配
objMH(0)就是其中第一次正则匹配成功所储存的字符串
.submatches(0)就是正则表达式内的第一个括号内匹配的内容
Set objRegEx = Nothing 再把这个objRegEx 从内存中回收不占用内存空间

CorelDRAWX4的VBA插件开发(二十一)字符串搜索和正则表达式匹配以及文件名关键字处理相关推荐

  1. CorelDRAWX4的VBA插件开发(二十四)复合选框组件与联合命名面板

    我们在处理文档的时候碰上的最多的问题就是与字符串相当的问题,这里再拿出来单把各种使用命名的小组件讲一下,我们先上效果图: 我们可以在上图看到最终结果,可以让一行文件名跟随各种组件进行更改,下下面我们先 ...

  2. CorelDRAWX4的VBA插件开发(二十五)多类目选择实现复合框内容置换

    有时候我们的复合框内的内容是有更多的需求,但是我们又不想另开一个窗口,怎么办呢,我们直接使用复合框内容替换就行啦 先上效果图: 先在面第板上拉出一个框架, 再在里面添加上三个选项按钮, 添加好之后这三 ...

  3. CorelDRAWX4的VBA插件开发(三十一)使用C++制作动态连接库DLL辅助VBA构键强大功能-(5)在VBA中动态调用DLL文件

    我们先来看一下动态调用的截图 先上代码 '静态调用 Public Declare Function wodedll Lib "E:\VS-DLL\conglingkaishi\Debug\C ...

  4. CorelDRAWX4的VBA插件开发(二十七)使用C++制作动态连接库DLL辅助VBA构键强大功能-(1)前言和准备工作

    我们在使用VBA的时候会很多的局限性,包括调用库和递归函数,对指针结构体和类都不友好,对时间复杂度和空间复杂度都优化得不够,换言之VB就不是从性能出发的语言,所以难免力不从心 所以这里用C++为VBA ...

  5. CorelDRAWX4的VBA插件开发(二十三)INI初始化文件的读写和路径的保存

    我们在上一节当中写了一个选择路径的功能, 所以我们希望这个路径在每一次打开的时候都会重新显示出上次选择的, 这就需要借用到外部文件来储存了, 要把这个内容写在硬盘上, 这种文件一般就是所谓的后缀为.i ...

  6. CorelDRAWX4的VBA插件开发(四) 用一个例子了解CORELDRAW-X4的四个基本对象

    CorelDRAWX4的VBA插件开发(四) 用一个例子了解CORELDRAW-X4的四个基本对象 1.打开第一章的界面如下图: 2.把之前的代码稍作修改 Sub 第一个插件()Dim zongShu ...

  7. CorelDRAWX4的VBA插件开发(三十四)调用C++实现一键智能群组(第3节)主调函数以及三个被调函数

    这一节就进入到了群组的实质性的内容,先把群组Qunzu()函数展示一下 先展示主调函数Qunzu(),函数里面还有四个被调函数等会儿再说 BOOL Qunzu() {//undo开 这个是一键多步撤销 ...

  8. CorelDRAWX4的C++插件开发(四十一)纯C++插件开发(5)实现六个纯虚函数

    这一节我们实现六个剩余的纯虚函数,先上代码 HRESULT __stdcall CongLingKaiShi::QueryInterface(REFIID riid, void** ppvObject ...

  9. CorelDRAWX4的VBA插件开发(四十六)VBA插入启动事件让CDR启动时检测并自动添加工具栏和按钮

    先上结果图,这个工具栏和按钮都是主程序自动生成的 在程序的运行当中,如果我们希望程序能够自己创建工具栏和按钮,可以在CDR启动事件中设置一个检测功能 Private Sub GlobalMacroSt ...

  10. CorelDRAWX4的VBA插件开发(十七)一键新建折页参考线

    在做印刷品的折页的时候,我们往往需要用到参考线来进行制作,这里就放上一组一键新建带出血的可选几折页的参考线功能 前面是为了方便大家了解程序所以共用一个按钮,到了这里,我们经常要用到面板,按钮有点不够用 ...

最新文章

  1. MySQL数据库排序order by(asc、desc)
  2. python爬虫入门代码-Python爬虫入门(一) 网络爬虫之规则
  3. Codeforces Round #504 E. Down or Right
  4. C++中函数调用操作符的重载
  5. 使用远程工具连接提示**Host *** is not allowed to connect to this mysql server**拒绝连接错误
  6. Akka Notes –演员记录和测试
  7. mysql工作中遇到的问题_MySQL工作中遇到的问题记录
  8. (5):Silverlight 2 实现简单的拖放功能
  9. flinkCdc的mysql配置及java测试代码
  10. linux防火墙桌面关闭端口,Linux关闭防火墙,开放端口
  11. java date 日期部分_Java处理Date时间格式的各种场景工具类(二)
  12. 软中断SOFTIRQ
  13. C向Python正确传递数组的代码
  14. php set get 作用_浅谈PHP拦截器之__set()与__get()的理解与使用方法
  15. 快播之父卷土重来 发布升级版快播,首个区块链视频Bliface
  16. Android TextView更换字体
  17. 动车报销凭证怎么取?高铁票的报销凭证在哪里取?
  18. idea新建module无法push到GitHub,没有Git选项
  19. 众里寻他千百度【再谈搜索】
  20. UML--核心元素之参与者Actor

热门文章

  1. EGE基础入门篇(五):换上我的彩色画笔
  2. 【免公众号】新版盲盒交友程序源码盲盒交友系统一元交友
  3. 安卓学习笔记6——多线程下载器
  4. Android 系统签名实现的三种方式
  5. 2020总结:临渊羡鱼不如退而结网
  6. 金笛JDMAIL打造公务员邮件系统
  7. 毕设 学生信息管理系统论文
  8. spring配置c3p0连接池
  9. 试卷分析计算机基础,计算机基础试卷分析.doc
  10. @JsonView注解的使用