.我们经常要根据一特性找到某些形状,比如

  • 找到轮廓颜色为CMYK(0,0,0,100)的形状
  • 找到填充色为RGB的形状
  • 找到应用一特效透镜的形状
  • 并且找到以上这些内容的个数

而他里面内置了快速定位的功能query, 这一节我们共同来学习快速查找QEURY功能

先上代码:

Sub 第一个插件()Dim theCount As IntegertheCount = ActivePage.Shapes.FindShapes(Query:="@colors.find(cmyk(0,0,0,100))").CountIf theCount <> 0 ThenMsgBox "本文件内含有" & theCount & "个"End If
End Sub

这是一段查找填充或者轮廓颜色为CMYK(0,0,0,100)也就是平常常说的单色黑的查找代码


这就是快速定位颜色的形状集合, 根据上一节的内容我们知道FindShapes是找到的形状集合ShapeRange
Count是ShapeRange里面的一个属性,里面记录的是集合的总数,是一个长整数

  • 再说一下查找形状大于100毫米的写法
Sub 第一个插件()Dim theCount As IntegertheCount = ActivePage.Shapes.FindShapes(Query:="@width > {100 mm}").CountIf theCount <> 0 ThenMsgBox "本文件内含有" & theCount & "个"End If
End Sub

这样就可以了

  • 再说一下查找某些特效的查法
Sub 第一个插件()Dim theCount As IntegertheCount = ActivePage.Shapes.FindShapes(Query:="@com.transparency.type <> 0").CountIf theCount <> 0 ThenMsgBox "本文件内含有" & theCount & "个"End If
End Sub

上面这一串是直接查找所有形状 看看里面有没有含有使用了透镜效果的形状,如果有就会弹窗

代码释义
FindShapes 可以在开发者手册看到最后一个参数是Query,这个query就是另类的快速查询方法了
Query:=""这个是固定用法,后面接双引号, 引号内部就是我们更改的查询参数
"@colors.find(cmyk(0,0,0,100))要访问当前对象的方法和属性,必须在方法或属性名称前加上@符号
这里再说一下关于Shape的可查询方法一共有哪些呢?

序号 符号 返回值
1 @name 当前形状的名称
2 @type 返回表示形状类型的字符串
3 @fill 返回表示形状填充的填充对象
4 @outline 返回表示形状轮廓的轮廓对象
5 @width 返回形状的宽度(后面要带单位)
6 @height 返回形状的高度
7 @left 返回该形状在页面上左边缘的水平位置
8 @right 返回该形状在页面上的右边缘的水平位置
9 @top 返回该形状在页面上的顶部Y轴位置
10 @bottom 返回该形状在页面上的底边的Y轴位置
11 @centerX 返回该形状在页面上的中心点的X轴位置
12 @CenterY 返回该形状在页面上的中心点的Y轴位置
13 @colors 返回用于形状填充和轮廓的颜色数组。这个数组只包含唯一的颜色,所以如果填充和轮廓有相同的颜色,只有一种颜色是返回值
14 @com 返回形状的COM对象。这允许访问形状对象及其子对象的任何属性和函数,因为CQL不能直接访问的方法和属性。

一共就这么14种

这样子,当我们写上其中任意一种的时候,这个@**字符串代表就是所有当前文档中所有能够找得到的与之匹配的形状
.find(cmyk(0,0,0,100))是颜色查找的固定用法

@width > {100 mm} 这一段里面, @width表示形状的宽度,> 表示大于{100 mm}表示100毫米要用大括号包起来.
这里插入讲一下几种常用的:

  1. 等于 =
  2. 不等于 <>
  3. 大于等于 >=
  4. 小于等于 <=
  5. 大于 >
  6. 小于 <
  7. 或者 |
  8. 非 !

@com.transparency.type <> 0这一段的com是一个组件,回传的是COM:IVGShape对象, 这一段是一个布尔值,也就是结果TRUE或者FALSE, 只要是TRUE这个shape就会被加入到集合中
这个COM组件内部是什么还有待进步了解,等我去tlb内部了解清楚了再回头来解释吧
这个transparency就是透镜特效的类,type是他的子属性
等于0的时候是没有特效, 而另外有1到4各表示一种类型的透镜特效, 所以我在这里用了非0,也就是<>0来表示

CorelDRAWX4的VBA插件开发(十四)快速定位形状相关推荐

  1. CorelDRAWX4的VBA插件开发(十)多文件编程

    很多时候有若干个按钮,但是里面有相同的功能,比如上一节中所中用到的修改当前文档的度量单位为毫米这一功能,每一个功能都需要用到这个功能的时候,我们可以把它单独拉出来,放在另一个文件里面,用的时候只需要调 ...

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

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

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

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

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

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

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

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

  6. CorelDRAWX4的VBA插件开发(四十四)建立类(1)汇总相似功能简化重复代码:一键建立设计外框加出血线和等分折页线

    这次主要来浅讲一下"类"这个功能,先上一下要实现的功能,建立设计外框加出血线和等分折页线,先上图 那什么是类呢?类其实就是CLASS,用来封装成员参数和函数的,拆开来里面就是这些东 ...

  7. CorelDRAWX4的VBA插件开发(四十五)建立类(2)汇总相似功能简化重复代码:一键建立设计外框加出血线和等分折页线

    在上一节中已经建立好了类,那么这一节我们来调用它,先建立一个面板 然后修改框体名称 然后从左侧新建一些按钮并且以拼音为结尾进行命名 Private Sub CheckBox2_zheYe_Click( ...

  8. CorelDRAWX4的VBA插件开发(三十五)调用C++实现一键智能群组(第4节)递归调用框选工具

    上一节没有讲到的递归函数diguiSelect,这一单独列出来讲一下 INT diguiSelect(long count, DOUBLE LX, DOUBLE BY, DOUBLE RX, DOUB ...

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

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

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

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

最新文章

  1. Nature 首度揭示大脑传递信息的真正逻辑
  2. IntelliJ IDEA 问题总结之中的一个 —— jar包、assets、maven、git
  3. html随机播放不同的音乐,如何随机播不同的背景音乐
  4. 一个很好的分页存储过程
  5. C# ASP.NET B/S模式下,采用lock语法 实现多用户并发产生不重复递增单号的一种解决方法技术参考...
  6. 在linux下安装mongo数据库,Linux系统下安装MongoDB
  7. python读行-Python如何一次读取N行
  8. JUnit4单元测试、JUnit4使用详解、assertThat用法
  9. angularjs modal模态框----创建可拖动的指令
  10. Sublime Text 3中配置Python3的开发环境
  11. 昨天又发火了:领导拒不给他人安排工作
  12. [Python从零到壹] 十八.可视化分析之Basemap地图包入门详解
  13. c语言等差数列试题及其答案,等差数列练习题
  14. 基于Labview的瀑布图的生成
  15. 7. 重磅硬核 | 一文聊透对象在JVM中的内存布局,以及内存对齐和压缩指针的原理及应用
  16. 遗传算法(Genetic Algorithm)解析
  17. 【yechaoa】5年Android开发的2021年终总结,实现Flag的一年
  18. 滤波笔记三:无迹卡尔曼滤波(UKF)
  19. 病毒分析快速入门01--分析环境搭建
  20. 论文解读:胶囊网络在小样本做文本分类中的应用(下)

热门文章

  1. 动易 转 html5,动易系统所有标签解释5
  2. 信息论基础 thomas 2nd ed
  3. Yarn简介及Capacity Fair Scheduler
  4. 金蝶eas怎么引出凭证_金蝶专业版如何引入引出凭证
  5. 求大佬解决0x00881340 处有未经处理的异常(在 ConsoleApplication1.exe 中): 0xC0000005: 写入位置 0x00993B8C 时发生访问冲突。
  6. 网络安全-wifi攻防
  7. vray for 3dmax2022 中文版
  8. 4G模块UICC逻辑通道入口+CGLA
  9. 基于JavaSpringMvc+mybatis实现学生信息管理系统
  10. 如何修改Excel2016默认的等线字体--亲测可用