CorelDRAW VBA - 遍历文档、页面、图层和形状对象
2018-01-23 本文已影响0人
成都超平面科技
公告
本专栏的相关的文章已不在简书同步更新,请直接访问 VBA探秘 官方网站或关注微信公众号获取最新文章动态。
coreldraw-vba-traverse-shapes目的
本文介绍CorelDRAW VBA代码遍历文档、页面或图层中所有对象的相关操作代码,有时候程序可能需要查找页面上的对象,用遍历的方式可实现批量查找、检索对象。
准备文档
创建1个新文档,添加两个页面,在第一个页面中添加1个文本,并导入一张图像;在第二个页面中添加一个文本。如下图所示:
页面1 页面2代码演示
下面的代码采用3重循环演示了遍历当前文档中所有页面、所有图层、所有图形对象的方法。
注:如果要遍历所有文档,则需要在最外层增加1层循环,用来遍历所有文档,此处不做演示,有疑问请留言。
Sub main()
' 定义循环变量
Dim i As Integer, j As Integer, k As Integer
Dim allPages As Pages, allShapes As shapes, allLayers As Layers
' 定义临时变量
Dim tempPage As Page, tempLayer As Layer, tempShape As Shape
Dim msg As String
' 遍历文档中的所有页面
Set allPages = ActiveDocument.Pages
For i = 1 To allPages.Count
Set tempPage = allPages.Item(i)
' 遍历页面中的所有图层
Set allLayers = tempPage.Layers
For j = 1 To allLayers.Count
Set tempLayer = allLayers.Item(j)
' 遍历图层中的所有形状(对象)
Set allShapes = tempLayer.shapes
For k = 1 To allShapes.Count
' 得到这个形状
Set tempShape = allShapes.Item(k)
' 根据形状的类型,输出不同的信息
msg = "在页面" & i & "的图层" & j & "中,找到了一个:"
' 如果是文本形状
If tempShape.Type = cdrTextShape Then
msg = msg & "文本"
End If
' 如果是位图形状
If tempShape.Type = cdrBitmapShape Then
msg = msg & "位图"
End If
' 打印调试消息到本地调试窗口
Debug.Print msg
Next k
Next j
Next i
MsgBox "遍历文档完成!请查看调试窗口"
End Sub
结果输出
在页面1的图层2中,找到了一个:位图
在页面1的图层2中,找到了一个:文本
在页面2的图层2中,找到了一个:文本
小结
在文档遍历中通常会用到对象的集合形式,例如 Shape
对象的集合形式是 Shapes
,Page
对象的集合形式是 Pages
,Layer
对象的集合形式是 Layers
,在定义集合变量的时候,可以直接这样定义。
原创声明:本文首发于个人CorelDRAW VBA博客,请尊重文章版权。
转载请注明原文链接:http://www.cdrvba.com/coreldraw-vba-traverse-shapes/