巧用VBA获取EXCEL图形的坐标和图形相关属性

在程序开发中,user给了本人一个excel,里面有几百个长方形,需要将这些长方形展示在页面中。
首先想到的是需要每个长方形左上角的坐标(x,y)值。这样在页面上就可以画出相对应的图形了。
但是几百个,人工统计坐标的话估计需要十几个小时。
Excel中sheet如下图:
在这里插入图片描述
所以运用vba,来快速实现此目标。本人是vba小白,通过百度获取相关知识,下面是我的大致步骤,如有错误之处,请同仁不啬赐教。

第一步,录制宏(因为是vba小白,所以直接录制宏,再编辑宏)

在Excel中点击视图,最右边有宏,点击宏
 宏的位置
点击录制宏,然后在excel中选中一个长方形,再停止录制,再查看宏,编辑宏。

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

上面最后一张图我们需要编辑的vba代码页面,其中 ActiveSheet.Shapes.Range(Array(“Rectangle 300”)).Select 是我们选中的长方形,Rectangle 300 是长方形名称(但是不是长方形内部的内容)。接下来我们循环这个sheet页中的所有shapes。
代码如下:
For Each a In Sheets(“位置图”).Shapes
ActiveSheet.Shapes.Range(Array(a.Name)).Select ‘a.Name Shapes的名称,选中循环的当前shapes。
i = i + 1 '累加数量
Cells(20 + i, 1) = Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text ’将选中的shapes的内容打印到页面上
Cells(20 + i, 2) = ActiveSheet.Shapes(a.Name).Left ‘x
Cells(20 + i, 3) = ActiveSheet.Shapes(a.Name).Top ’y
Cells(20 + i, 4) = ActiveSheet.Shapes(a.Name).Width 'w
Cells(20 + i, 5) = ActiveSheet.Shapes(a.Name).Height 'h
Next
其中 Cells(20, 1) 是第20行第1列的单元格。
在这里插入图片描述
下面是一下常用方法:
Dim Shn(1 To 1000) As String '定义数组,用于存放shape名
Dim Shx(1 To 1000) As String '定义数组,用于存放shape名
Dim Shy(1 To 1000) As String '定义数组,用于存放shape名
For Each a In Sheets(“位置图”).Shapes
Dim c As Range
Set c = ActiveSheet.Shapes(a.Name).TopLeftCell
ActiveSheet.Shapes.Range(Array(a.Name)).Select
i = i + 1 '累加数量
'Shn(i) = Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text
'Shx(i) = c.Left
'Shy(i) = c.Top
Cells(20 + i, 1) = Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text
Cells(20 + i, 2) = c.Left
Cells(20 + i, 3) = c.Top
'MsgBox c.Left
’ MsgBox c.Top
Next
MsgBox 即为弹出框。

以上完成坐标的获取。并打印在excel中,后续再存入数据库,就可以完成再页面上画长方形了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值