ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 如何遍历SmartArt

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-7-3 08:22 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

Shape.SmartArt 属性 (Excel) | Microsoft Learn  https://learn.microsoft.com/zh-c ... xcel.shape.smartart

返回一个 对象,该对象表示与形状关联的 SmartArt。 此为只读属性。




d.jpg d1.jpg



  1. Sub ll()
  2.    Dim Pres As Presentation
  3.        Set Pres = Application.ActivePresentation
  4.    Dim Sld As Slide, Shp As Shape
  5.    Dim Ss As SmartArt
  6.        For Each Sld In Pres.Slides
  7.             For Each Shp In Sld.Shapes
  8.                  Debug.Print Shp.Name, Shp.Type
  9.                  Select Case Shp.Type
  10.                       Case 24  '"msoIgxGraphic"
  11.                           Set Ss = Shp.SmartArt
  12.                           With Ss
  13.                               Debug.Print .AllNodes.Count
  14.                               Debug.Print .Application
  15.                           End With
  16.                           Stop
  17.                           Stop
  18.                  End Select
  19.             Next Shp
  20.        Next Sld
  21. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-3 12:23 | 显示全部楼层



d.jpg
手动能更改图片,VBA不能更改图片。
  1. Sub ll1()
  2.    Dim oLeft, oTop, oWidth, oHeight
  3.    Dim Pres As Presentation
  4.        Set Pres = Application.ActivePresentation
  5.    Dim Sld As Slide, Shp As Shape
  6.        Set Sld = Pres.Slides(1)
  7.        Set Shp = Sld.Shapes("Pic")
  8.        With Shp
  9.             oLeft = .Left
  10.             oTop = .Top
  11.             oWidth = .Width
  12.             oHeight = .Height
  13.        End With
  14.        Debug.Print Shp.Name
  15.        Shp.Delete
  16.        FileName = "F:\6.jpg"
  17.        Set Shp = Sld.Shapes.AddPicture(FileName, msoCTrue, 0, oLeft, oTop, oWidth, oHeight)
  18.        With Shp
  19.             .Name = "Pic"
  20.             .AutoShapeType = msoShapeSquareTabs
  21.        End With

  22. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-6 23:27 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
顶层msoBringToFront和底层msoSendBackward
  1. Sub del()
  2.    Dim Pres As Presentation
  3.    Dim Sld As Slide
  4.    Dim Shp As Shape
  5.        Set Pres = Application.ActivePresentation
  6.        For ii = 1 To Pres.Slides.Count
  7.            Set Sld = Pres.Slides(ii)
  8.            Set Shp = Sld.Shapes("oPicture")
  9.            'Shp.ZOrder msoBringForward
  10.            Shp.ZOrder msoBringToFront
  11.            'Shp.ZOrder msoSendBackward
  12.            Debug.Print Sld.Name, Shp.Name
  13.        Next ii
  14. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-10 08:46 | 显示全部楼层
Sld.SlideIndex 和 Pres.Slides.Count 的应用。

  1. Sub del()
  2.    Dim Pres As Presentation
  3.    Dim Sld As Slide
  4.    Dim Shp As Shape
  5.    Dim oTable As Table
  6.    Dim Str, Aa
  7.        Set Pres = Application.ActivePresentation
  8.        For ii = 2 To Pres.Slides.Count
  9.           Set Sld = Pres.Slides(ii)
  10.           Set oTable = Sld.Shapes("oTable").Table
  11.           Str = oTable.Cell(2, 3).Shape.TextFrame.TextRange.Text
  12.           Aa = Split(Str, " ")
  13.          
  14.           Str = Aa(0) & " (第" & Sld.SlideIndex - 1 & "张/共" & Pres.Slides.Count & "张)"
  15.           oTable.Cell(2, 3).Shape.TextFrame.TextRange.Text = Str
  16.               Debug.Print Sld.SlideNumber, Sld.SlideIndex, oTable.Cell(2, 3).Shape.TextFrame.TextRange.Text
  17.          
  18.        Next ii

  19. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-10 16:59 | 显示全部楼层
遍历表格Table和文本TextRange



  1. Private Sub d()
  2.    Dim Pres As Presentation
  3.        Set Pres = Application.ActivePresentation
  4.    Dim Shp As Shape, Str
  5.    Dim oTable As Table
  6.    Dim TxtRng As TextRange
  7.       For ii = 2 To Pres.Slides.Count
  8.          Set oTable = Pres.Slides(ii).Shapes("oTable").Table
  9.          With oTable
  10.             For kk = 0 To .Rows.Count - 2
  11.                 .Rows(kk + 1).Height = 20
  12.                 'Debug.Print Pres.Slides(ii).Name, .Cell(kk + 1, 1).Shape.Height
  13.             Next kk
  14.             
  15.             Str = .Cell(1, 2).Shape.TextFrame.TextRange.Text
  16.             Debug.Print Str,
  17.          End With
  18.          Set Shp = Pres.Slides(ii).Shapes("oTitle")
  19.    
  20.          Set TxtRng = Shp.TextFrame.TextRange
  21.          Debug.Print TxtRng.Font.Size,
  22.          TxtRng.Font.Size = 28
  23.          Shp.Top = 30
  24.         
  25.          Debug.Print Shp.Top
  26.          
  27.       Next ii
  28.       
  29. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-11-30 17:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub ll()
  2.    Dim MsoArr(138)
  3.    Dim Hh
  4.           MsoArr(0) = msoShapeFlowchartConnector
  5.           MsoArr(1) = msoShapeFlowchartData
  6.           MsoArr(2) = msoShapeFlowchartDecision
  7.           MsoArr(3) = msoShapeFlowchartDelay
  8.           MsoArr(4) = msoShapeFlowchartDirectAccessStorage
  9.           MsoArr(5) = msoShapeFlowchartDisplay
  10.           MsoArr(6) = msoShapeFlowchartDocument
  11.           MsoArr(7) = msoShapeFlowchartExtract
  12.           MsoArr(8) = msoShapeFlowchartInternalStorage
  13.           MsoArr(9) = msoShapeFlowchartMagneticDisk
  14.           MsoArr(10) = msoShapeFlowchartManualInput
  15.           MsoArr(11) = msoShapeFlowchartManualOperation
  16.           MsoArr(12) = msoShapeFlowchartMerge
  17.           MsoArr(13) = msoShapeFlowchartMultidocument
  18.           MsoArr(14) = msoShapeFlowchartOffpageConnector
  19.           MsoArr(15) = msoShapeFlowchartOr
  20.           MsoArr(16) = msoShapeFlowchartPredefinedProcess
  21.           MsoArr(17) = msoShapeFlowchartPreparation
  22.           MsoArr(18) = msoShapeFlowchartProcess
  23.           MsoArr(19) = msoShapeFlowchartPunchedTape
  24.           MsoArr(20) = msoShapeFlowchartSequentialAccessStorage
  25.           MsoArr(21) = msoShapeFlowchartSort
  26.           MsoArr(22) = msoShapeFlowchartStoredData
  27.           MsoArr(23) = msoShapeFlowchartSummingJunction
  28.           MsoArr(24) = msoShapeFlowchartTerminator
  29.           MsoArr(25) = msoShapeFoldedCorner
  30.           MsoArr(26) = msoShapeHeart
  31.           MsoArr(27) = msoShapeHexagon
  32.           MsoArr(28) = msoShapeHorizontalScroll
  33.           MsoArr(29) = msoShapeIsoscelesTriangle
  34.           MsoArr(30) = msoShapeLeftArrow
  35.           MsoArr(31) = msoShapeLeftArrowCallout
  36.           MsoArr(32) = msoShapeLeftBrace
  37.           MsoArr(33) = msoShapeLeftBracket
  38.           MsoArr(34) = msoShapeLeftRightArrow
  39.           MsoArr(35) = msoShapeLeftRightArrowCallout
  40.           MsoArr(36) = msoShapeLeftRightUpArrow
  41.           MsoArr(37) = msoShapeLeftUpArrow
  42.           MsoArr(38) = msoShapeLightningBolt
  43.           MsoArr(39) = msoShapeLineCallout1
  44.           MsoArr(40) = msoShapeLineCallout1AccentBar
  45.           MsoArr(41) = msoShapeLineCallout1BorderandAccentBar
  46.           MsoArr(42) = msoShapeLineCallout1NoBorder
  47.           MsoArr(43) = msoShapeLineCallout2
  48.           MsoArr(44) = msoShapeLineCallout2AccentBar
  49.           MsoArr(45) = msoShapeLineCallout2BorderandAccentBar
  50.           MsoArr(46) = msoShapeLineCallout2NoBorder
  51.           MsoArr(47) = msoShapeLineCallout3
  52.           MsoArr(48) = msoShapeLineCallout3AccentBar
  53.           MsoArr(49) = msoShapeLineCallout3BorderandAccentBar
  54.           MsoArr(50) = msoShapeLineCallout3NoBorder
  55.           MsoArr(51) = msoShapeLineCallout4
  56.           MsoArr(52) = msoShapeLineCallout4AccentBar
  57.           MsoArr(53) = msoShapeLineCallout4BorderandAccentBar
  58.           MsoArr(54) = msoShapeLineCallout4NoBorder
  59.           'MsoArr(55) = msoShapeMixed
  60.           MsoArr(56) = msoShapeMoon
  61.           MsoArr(57) = msoShapeNoSymbol
  62.           MsoArr(58) = msoShapeNotchedRightArrow
  63.           'MsoArr(59) = msoShapeNotPrimitive
  64.           MsoArr(60) = msoShapeOctagon
  65.           MsoArr(61) = msoShapeOval
  66.           MsoArr(62) = msoShapeOvalCallout
  67.           MsoArr(63) = msoShapeParallelogram
  68.           MsoArr(64) = msoShapePentagon
  69.           MsoArr(65) = msoShapePlaque
  70.           MsoArr(66) = msoShapeQuadArrow
  71.           MsoArr(67) = msoShapeQuadArrowCallout
  72.           MsoArr(68) = msoShapeRectangle
  73.           MsoArr(69) = msoShapeRectangularCallout
  74.           MsoArr(70) = msoShapeRegularPentagon
  75.           MsoArr(71) = msoShapeRightArrow
  76.           MsoArr(72) = msoShapeRightArrowCallout
  77.           MsoArr(73) = msoShapeRightBrace
  78.           MsoArr(74) = msoShapeRightBracket
  79.           MsoArr(75) = msoShapeRightTriangle
  80.           MsoArr(76) = msoShapeRoundedRectangle
  81.           MsoArr(77) = msoShapeRoundedRectangularCallout
  82.           MsoArr(78) = msoShapeSmileyFace
  83.           MsoArr(79) = msoShapeStripedRightArrow
  84.           MsoArr(80) = msoShapeSun
  85.           MsoArr(81) = msoShapeTrapezoid
  86.           MsoArr(82) = msoShapeUpArrow
  87.           MsoArr(83) = msoShapeUpArrowCallout
  88.           MsoArr(84) = msoShapeUpDownArrow
  89.           MsoArr(85) = msoShapeUpDownArrowCallout
  90.           MsoArr(86) = msoShapeUpRibbon
  91.           MsoArr(87) = msoShapeUTurnArrow
  92.           MsoArr(88) = msoShapeVerticalScroll
  93.           MsoArr(89) = msoShapeWave
  94.           MsoArr(90) = msoShapeFlowchartCollate
  95.           MsoArr(91) = msoShape16pointStar
  96.           MsoArr(92) = msoShape24pointStar
  97.           MsoArr(93) = msoShape32pointStar
  98.           MsoArr(94) = msoShape4pointStar
  99.           MsoArr(95) = msoShape5pointStar
  100.           MsoArr(96) = msoShape8pointStar
  101.           MsoArr(97) = msoShapeActionButtonBackorPrevious
  102.           MsoArr(98) = msoShapeActionButtonBeginning
  103.           MsoArr(99) = msoShapeActionButtonCustom
  104.           MsoArr(100) = msoShapeActionButtonDocument
  105.           MsoArr(101) = msoShapeActionButtonEnd
  106.           MsoArr(102) = msoShapeActionButtonForwardorNext
  107.           MsoArr(103) = msoShapeActionButtonHelp
  108.           MsoArr(104) = msoShapeActionButtonHome
  109.           MsoArr(105) = msoShapeActionButtonInformation
  110.           MsoArr(106) = msoShapeActionButtonMovie
  111.           MsoArr(107) = msoShapeActionButtonReturn
  112.           MsoArr(108) = msoShapeActionButtonSound
  113.           MsoArr(109) = msoShapeArc
  114.           MsoArr(110) = msoShapeBalloon
  115.           MsoArr(111) = msoShapeBentArrow
  116.           MsoArr(112) = msoShapeBentUpArrow
  117.           MsoArr(113) = msoShapeBevel
  118.           MsoArr(114) = msoShapeBlockArc
  119.           MsoArr(115) = msoShapeCan
  120.           MsoArr(116) = msoShapeChevron
  121.           MsoArr(117) = msoShapeCircularArrow
  122.           MsoArr(118) = msoShapeCloudCallout
  123.           MsoArr(119) = msoShapeCross
  124.           MsoArr(120) = msoShapeCube
  125.           MsoArr(121) = msoShapeCurvedDownArrow
  126.           MsoArr(122) = msoShapeCurvedDownRibbon
  127.           MsoArr(123) = msoShapeCurvedLeftArrow
  128.           MsoArr(124) = msoShapeCurvedRightArrow
  129.           MsoArr(125) = msoShapeCurvedUpArrow
  130.           MsoArr(126) = msoShapeCurvedUpRibbon
  131.           MsoArr(127) = msoShapeDiamond
  132.           MsoArr(128) = msoShapeDonut
  133.           MsoArr(129) = msoShapeDoubleBrace
  134.           MsoArr(130) = msoShapeDoubleBracket
  135.           MsoArr(131) = msoShapeDoubleWave
  136.           MsoArr(132) = msoShapeDownArrow
  137.           MsoArr(133) = msoShapeDownArrowCallout
  138.           MsoArr(134) = msoShapeDownRibbon
  139.           MsoArr(135) = msoShapeExplosion1
  140.           MsoArr(136) = msoShapeExplosion2
  141.           MsoArr(137) = msoShapeFlowchartAlternateProcess
  142.           MsoArr(138) = msoShapeFlowchartCard
  143.       Dim Shp As Shape, oShp As Shape, Str
  144. Debug.Print TypeName(MsoArr(55))


  145.           Set Shp = Sheet1.Shapes(1)
  146.           Hh = Shp.Top
  147.           ''
  148.           For ii = 0 To 138
  149.                Shp.Duplicate
  150.                Set oShp = Sheet1.Shapes(ii)
  151.                If MsoArr(ii) <> Empty Then
  152.                oShp.AutoShapeType = MsoArr(ii)
  153.                
  154.                Hh = Hh + 100
  155.                oShp.Top = Hh
  156.                Str = "MsoArr(" & ii & ")=" & MsoArr(ii)
  157.                
  158.                oShp.TextFrame2.TextRange.Text = MsoArr(ii) & Str
  159.                End If
  160.                
  161.           Next ii


  162. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-26 03:16 , Processed in 0.031956 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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