ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1516|回复: 25

[求助] 能否用VBA实现对两图进行布尔运算

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-8-20 23:27 | 显示全部楼层 |阅读模式
本帖最后由 aman1516 于 2023-8-21 12:40 编辑

PPT中,若对两个图形进行相关布尔运算:
结合 (msoMergeUnion)
组合  (msoMergeCombine)
拆分 (msoMergeFragment)
相交 (msoMergeIntersect)
剪除 (msoMergeSubtract)
使用的是 ShapeRange.MergeShapes(MergeCmd, PrimaryShape) 方法
但在2007中,提示 “方法和数据成员未找到” 的错误提示,
  1. Sub MerPic()
  2. Dim shp1 As Shape, shp2 As Shape
  3. Set shp1 = ActivePresentation.Slides(1).Shapes.AddShape(msoShapeOval, 100, 100, 50, 50)
  4. Set shp2 = ActivePresentation.Slides(1).Shapes.AddShape(msoShapePie, 100, 100, 50, 50)
  5. <pre style="box-sizing: border-box; border: 0px; font-family: inherit; font-size: 15px; margin-bottom: 5px; outline: 0px; vertical-align: baseline; text-align: justify; word-break: break-all; background-color: rgb(255, 255, 255);"><code class="prettyprint-override" style="box-sizing: border-box; border: 0px; font-family: inherit; font-style: inherit; outline: 0px; vertical-align: baseline;">Call ActiveWindow.Selection.SlideRange(1).Shapes.Range(Array(shp1.ZOrderPosition, shp2.ZOrderPosition)).MergeShapes(msoMergeCombine)</code></pre>End Sub
复制代码
或者改成,
  1. Sub hbing()
  2. Dim shp1 As Shape
  3. Dim shp2 As Shape
  4. Dim aShapeArray As Variant
  5. Dim oRange As ShapeRange
  6. Set shp1 = ActivePresentation.Slides(1).Shapes.AddShape(msoShapeOval, 100, 100, 50, 50)
  7. Set shp2 = ActivePresentation.Slides(1).Shapes.AddShape(msoShapePie, 100, 100, 50, 50)
  8. Set aShapeArray = ActivePresentation.Slides(1).Shapes.Range(Array(shp1.Name, shp2.Name))
  9. Set oRange = aShapeArray
  10. oRange.MergeShapes (msoMergeCombine)     'msoMergeUnion
  11. ActivePresentation.Slides(1).Shapes(ActivePresentation.Slides(1).Shapes.Count).Name = "BINGO!"
  12. End Sub
复制代码
都出错,.MergeShape 方法未在 Project 中实现(属性方法中也没有提示)
请教下是版本问题,还是引用问题?
能否在2007PPT中,用VBA实现两个图形上述各种的布尔处理运算?

再退一步,EXCEL能否用VBA实现图形的布尔运算?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-20 23:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 aman1516 于 2023-8-21 19:17 编辑

image.jpg
看来是要升级Office 版本了

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-22 20:39 | 显示全部楼层
PPT的VBA 应用,太少人弄了,顶起一下

TA的精华主题

TA的得分主题

发表于 2023-8-22 20:42 | 显示全部楼层
不是版本的问题,是Excel没有PPT的一些图形处理功能

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-23 00:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
micch 发表于 2023-8-22 20:42
不是版本的问题,是Excel没有PPT的一些图形处理功能

是要在PPT里面处理的,想实现
Office 2013 以上 PowerPoint  的图形处理功能.....

TA的精华主题

TA的得分主题

发表于 2023-8-23 07:54 | 显示全部楼层
下面代码在高版本Office和WPS中都通过,你试下2007能用吗?
  1. Sub hbing()
  2.     Dim oSP As Shape
  3.     Dim oSPR As ShapeRange
  4.     Dim shp1 As Shape, shp2 As Shape
  5.     With ActivePresentation
  6.         With .Slides(1)
  7.             Set shp1 = .Shapes.AddShape(msoShapeOval, 100, 100, 50, 50)
  8.             Set shp2 = .Shapes.AddShape(msoShapePie, 100, 100, 50, 50)
  9.             Set oSP = shp1
  10.             Set oSPR = .Shapes.Range(Array(shp1.ZOrderPosition, shp2.ZOrderPosition))
  11.             With oSPR
  12.                 .MergeShapes msoMergeSubtract, oSP
  13.             End With
  14.         End With
  15.     End With
  16. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2023-8-23 08:29 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
偏门一点,PPT、Excel、浏览器等多数工具都支持插入svg图,而svg里可以用代码写路径、遮罩,实现集合操作,具体代码问gpt,准确性还不错

TA的精华主题

TA的得分主题

发表于 2023-8-23 08:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
WIN7  64  OFFICE 2016  运行正常
image.png

TA的精华主题

TA的得分主题

发表于 2023-8-23 12:42 | 显示全部楼层
有没有一种可能,PPT2007还没有布尔运算~

TA的精华主题

TA的得分主题

发表于 2023-8-23 13:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
aman1516 发表于 2023-8-23 00:27
是要在PPT里面处理的,想实现
Office 2013 以上 PowerPoint  的图形处理功能.....

image.png

image.png


您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-1 09:30 , Processed in 0.047005 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表