ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

Dim SmtArt As smartart是不是office 2007版本问题,结果不成立。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-9-6 11:06 | 显示全部楼层 |阅读模式



image.png

使用起来应该非常简单,



  1. Sub SelectSmartArtItem()
  2.     Dim oSlide As Slide
  3.     Dim oShap As Shape
  4.     Dim oSmartArt As SmartArt
  5.     Dim oNode As SmartArtNode
  6.    
  7.     ' 假设我们在第一张幻灯片上操作,并且SmartArt图形命名为"MySmartArt"
  8.     Set oSlide = ActivePresentation.Slides(1)
  9.     Set oShap = oSlide.Shapes("MySmartArt")
  10.    
  11.     ' 引用SmartArt图形
  12.     Set oSmartArt = oShap.SmartArt
  13.    
  14.     ' 选择第一个节点
  15.     Set oNode = oSmartArt.AllNodes(1)
  16.    
  17.     ' 你可以在这里添加更多代码来操作选中的节点
  18. End Sub
复制代码



但在使用中遇到问题

image.png

Dim SmtArt As smartart 找不到引用项,结果不成立。

问,是不是我的office 2007版本要有问题。


TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-6 16:51 | 显示全部楼层





  1. Sub ll()
  2.    Dim Sht As Worksheet
  3.       Set Sht = Sheet1
  4.    Dim Shp As Shape
  5.    Dim s As SmartTags
  6.       
  7.       For Each Shp In Sht.Shapes
  8.            Debug.Print Shp.Name, Shp.Type
  9.            
  10.       Next Shp
  11.    
  12. End Sub
复制代码


结果是24,但Dim s as SmartArt就是不成立。

Shape.Type属性名称及对应值列表
当一个工作表中有多种Shape类型的时候,可以通过Shape.Type属性值返回一个代表形状类型的MsoShapeType数值。通过该数值可知该图形的类型。
列表如下:
名称
说明
msoAutoShape
1
自选图形
msoCallout
2
标注
msoCanvas
20
画布
msoChart
3
msoComment
4
批注
msoDiagram
21
图表
msoEmbeddedOLEObject
7
嵌入的 OLE 对象
msoFormControl
8
窗体控件
msoFreeform
5
任意多边形
msoGroup
6
组合
msoIgxGraphic
24
SmartArt 图形
msoInk
22
墨迹
msoInkComment
23
墨迹批注
msoLine
9
线条
msoLinkedOLEObject
10
链接 OLE 对象
msoLinkedPicture
11
链接图片
msoMedia
16
媒体
msoOLEControlObject
12
OLE 控件对象
msoPicture
13
图片
msoPlaceholder
14
占位符
msoScriptAnchor
18
脚本定位标记
msoShapeTypeMixed
-2
混和形状类型
msoTable
19
msoTextBox
17
文本框
msoTextEffect
15
文本效果




TA的精华主题

TA的得分主题

发表于 2024-9-6 17:46 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-6 18:16 | 显示全部楼层
谢谢解答,花了几小时没有通过。
学习了SmartArt的知识点。

了解有关 SmartArt 图形的详细信息 - Microsoft 支持  https://prod.support.services.microsoft.com/zh-cn/office/%E4%BA%86%E8%A7%A3%E6%9C%89%E5%85%B3-smartart-%E5%9B%BE%E5%BD%A2%E7%9A%84%E8%AF%A6%E7%BB%86%E4%BF%A1%E6%81%AF-6ea4fdb0-aa40-4fa9-9348-662d8af6ca2c

SmartArt 图形 是信息和观点的视觉表现形式。 可以通过选择适合消息的版式进行创建。 一些版式(例如组织结构图或维恩图)用于展现特定类型的信息,而其他版式只是增强项目符号列表的外观。

SmartArt 图形 可与其他功能(例如主题)结合使用,只需单击几下鼠标就能帮助创建具有设计师水准的插图。

SmartArt 图形概述

选择布局时要考虑的事项

关于“文本”窗格

SmartArt 图形的样式、颜色和效果

SmartArt 图形的动画

f945427e86f2f458cbb180c78acefbc2_e95ec6cb-221d-407c-a1a4-05a30d1fd723.png

[size=1.6em]下表列出了 SmartArt 图形 的一些常用示例,以及最适合每种用例的 SmartArt 类型。
[size=1.6em]若要
[size=1.6em]使用此类型

[size=1.6em]显示无序信息。
[size=1.6em]列表

[size=1.6em]在流程或时间线中显示步骤。
[size=1.6em]流程

[size=1.6em]显示连续的流程。
[size=1.6em]循环

[size=1.6em]创建组织结构图。
[size=1.6em]层次结构

[size=1.6em]显示决策树。
[size=1.6em]层次结构

[size=1.6em]对连接进行图解。
[size=1.6em]关系

[size=1.6em]显示各部分如何与整体关联。
[size=1.6em]矩阵

[size=1.6em]使用图片传达或强调内容。
[size=1.6em]图片

[size=1.6em]显示与顶部或底部最大一部分之间的比例关系。
[size=1.6em]棱锥图
[size=1.6em]有关选择合适 SmartArt 图形 版式的更多指导,以及有关每种版式类型的详细信息,请参阅选择 SmartArt 图形
关于“文本”窗格
[size=1.6em]使用“文本”窗格输入和编辑在 SmartArt 图形 中显示的文本。 “文本”窗格显示在 SmartArt 图形 的左侧。 在“文本”窗格中添加和编辑内容时,SmartArt 图形 会自动更新,即根据需要添加或删除形状。
[size=1.6em]创建 SmartArt 图形 时,SmartArt 图形 及其“文本”窗格由占位符文本填充,可以使用自己的信息替换这些占位符文本。 在“文本”窗格顶部,可以编辑将在 SmartArt 图形 中显示的文本。 在“文本”窗格底部,可以阅读有关该 SmartArt 图形 的说明。
[size=1.6em]在包含固定数量形状的 SmartArt 图形 中,只有“文本”窗格中的某些文本显示在 SmartArt 图形 中。 文本、图片或其他未显示的内容在“文本”窗格中使用红色 X 进行标识。如果切换到另一个布局,则此内容仍然可用,但如果保留并关闭此相同布局,则不会保存信息,以保护你的隐私。
[size=1.6em]“文本”窗格与大纲或项目符号列表类似,将信息直接映射到 SmartArt 图形。 每个 SmartArt 图形 定义了它自己在“文本”窗格中的项目符号与 SmartArt 图形 中的一组形状之间的映射。
[size=1.6em]要在“文本”窗格中新建一行带有项目符号的文本,请按 Enter。 要在“文本”窗格中缩进一行,请选择要缩进的行,然后在“SmartArt 工具”下的“设计”选项卡上,单击“降级”。 要逆向缩进一行,请单击“升级”。 还可以在“文本”窗格中按 Tab 进行缩进,按 Shift+Tab 进行逆向缩进。
[size=1.6em]如果没有看到“SmartArt 工具”或“设计”选项卡,请双击 SmartArt 图形。
[size=1.6em]根据所选的版式,“文本”窗格中的每个项目符号在 SmartArt 图形 中将表示为一个新的形状或某个形状中的一个项目符号。 例如,请注意下面两个 SmartArt 图形 中相同文本的不同映射方式。 在第一个示例中,子项目符号表示为单独的形状。 在第二个示例中,子项目符号表示为该形状中的项目符号。

[size=1.6em]提示:   如果不希望所有文字位于不同的形状中,请切换到不同布局,该布局将所有文字显示为项目符号。
[size=1.6em]如果使用带有“助手”形状的组织结构图布局,则后面跟有一行的项目符号用于指示该“助手”形状。
[size=1.6em]通过向“文本”窗格中的文本应用格式,可以将字符格式(如字体、字号、加粗、 斜体和下划线)应用于 SmartArt 图形 中的文本,并将反映在 SmartArt 图形 中。 一个形状中的字号如果因为添加了更多文本而缩小,SmartArt 图形 其他形状中的所有其他文本也会同步缩小,以保持 SmartArt 图形 外观一致且专业。
[size=1.6em]选择一个版式后,可以将鼠标指针移到“设计”选项卡上显示的任何其他版式上,并使用实时预览查看应用该版式后内容的外观。



TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-8 10:58 | 显示全部楼层

image.png

image.png


  1. Sub ll()
  2.    Dim S As SmartArt
  3.    Dim ShpRng As ShapeRange
  4.      Set ShpRng = Application.ActiveWindow.Selection.ShapeRange
  5.      Debug.Print ShpRng.Type
  6.      Set S = ShpRng.SmartArt
  7.      
  8.      Debug.Print S.Layout.Name
  9. End Sub
复制代码
有点眉目





TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-10 09:30 | 显示全部楼层
Shape.HasSmartArt 属性 (Word) | Microsoft Learn  https://learn.microsoft.com/zh-c ... d.shape.hassmartart


  1. Dim myShape As Shape

  2. Set myShape = ActiveDocument.Shapes(1)

  3. If myShape.HasSmartArt Then
  4. MsgBox "The first shape contains SmartArt."
  5. Else
  6. MsgBox "The first shape contains no SmartArt."
  7. End If
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-10 10:39 | 显示全部楼层

image.png



  1. Sub lll()
  2.    Dim Shp As Shape, Shps As Shapes
  3.        Set Shps = Application.ActivePresentation.Slides(1).Shapes
  4.    Dim SmtArt As SmartArt
  5.        For Each Shp In Shps
  6.             If Shp.Type = 24 Then
  7.                  'Debug.Print Shp.Name, Shp.Type
  8.                  Set SmtArt = Shp.SmartArt
  9.             End If
  10.        Next Shp
  11. Stop

  12.       With SmtArt
  13.           Debug.Print .Layout.Name
  14.       End With
  15.      
  16. End Sub


  17. Sub ll()
  18.    Dim Shp As Shape, Shps As Shapes
  19.        Set Shps = Application.ActivePresentation.Slides(1).Shapes
  20.    Dim SmtArt As SmartArt
  21.        Set SmtArt = Shps.AddSmartArt(图片题注列表, 10, 10, 100, 100)
  22. End Sub
复制代码


kkk.zip

63.56 KB, 下载次数: 2

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-10 10:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ning84 发表于 2024-9-10 09:30
Shape.HasSmartArt 属性 (Word) | Microsoft Learn  https://learn.microsoft.com/zh-cn/office/vba/api/wo ...

image.png



image.png


  1. Sub lll()
  2.    Dim Shp As Shape, Shps As Shapes
  3.        Set Shps = Application.ActivePresentation.Slides(1).Shapes
  4.    Dim SmtArt As SmartArt
  5.        For Each Shp In Shps
  6.             If Shp.HasSmartArt Then
  7.                  'Debug.Print Shp.Name, Shp.Type
  8.                  Set SmtArt = Shp.SmartArt
  9.             End If
  10.        Next Shp
  11. Stop

  12.       With SmtArt
  13.           Debug.Print .Layout.Name
  14.       End With
  15.      
  16. End Sub


  17. Sub ll()
  18.    Dim Shp As Shape, Shps As Shapes
  19.        Set Shps = Application.ActivePresentation.Slides(1).Shapes
  20.    Dim SmtArt As SmartArt
  21.        Set SmtArt = Shps.AddSmartArt(图片题注列表, 10, 10, 100, 100)
  22. End Sub
复制代码





kkk.zip

51.14 KB, 下载次数: 3

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-10 18:06 | 显示全部楼层
  1. Sub aa()
  2.    Dim SmtArt As SmartArt
  3.    Dim Shp As Shape
  4.        Set Shp = Sheet1.Shapes(1)
  5.        Set SmtArt = Shp.SmartArt
  6.        With SmtArt
  7.            Debug.Print .Nodes.Count, .Layout.Name, .Layout.ID
  8.        End With
  9.        Stop
  10.        Set Shp = Sheet2.Shapes(1)
  11.        Set SmtArt = Shp.SmartArt
  12.        With SmtArt
  13.            Debug.Print .Nodes.Count, .Layout.Name, .Layout.ID
  14.        End With
  15.        Stop

  16. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-11 10:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
在AI中给出胡示例程序是不是在WPS中不可以用,



[color=var(--color-neutral-100,#000)][color=var(--color-text-primary)][color=var(--md-box-samantha-normal-text-color) !important]在 VBA 中,“SquareAccentList” 通常是与 SmartArt 图形相关的一个参数或样式名称。

[color=var(--md-box-samantha-normal-text-color) !important]如果是在操作 SmartArt 图形时遇到这个术语,可能涉及到设置特定的 SmartArt 样式。例如,使用 VBA 代码可以设置特定的 SmartArt 图形的布局和样式,可能会出现对 “SquareAccentList” 的引用,以指定某种具有方形和强调效果的列表样式布局。


[color=var(--md-box-samantha-normal-text-color) !important]以下是一个简单的示例代码,假设你想设置一个现有的 SmartArt 对象为特定样式:


收起


[color=rgba(255, 255, 255, 0.55)]vb

复制


Sub SetSmartArtStyle()    Dim shp As Shape    Set shp = ActiveSheet.Shapes(1) '假设第一个形状是 SmartArt    If shp.Type = msoSmartArt Then        shp.SmartArt.Layout = msoSmartArtLayoutSquareAccentList '将布局设置为 SquareAccentList 样式    End IfEnd Sub



[color=var(--md-box-samantha-normal-text-color) !important]需要注意的是,具体的使用场景可能因文档结构和需求而有所不同。如果这是在错误信息中出现的内容,可能需要进一步检查代码中对 SmartArt 的操作是否正确以及相关对象和属性的引用是否准确。









[color=var(--s-color-text-secondary,rgba(0,0,0,.85))]除了 msoSmartArtLayoutSquareAccentList 样式,还有哪些 SmartArt 布局样式?








[color=var(--color-neutral-100,#000)][color=var(--s-color-text-secondary,rgba(0,0,0,.85))]基于 4 个搜索来源
















[color=var(--color-neutral-100,#000)][color=var(--color-text-primary)][color=var(--md-box-samantha-normal-text-color) !important]以下是一些常见的 SmartArt 布局样式:

  • [color=var(--md-box-samantha-deep-text-color) !important]基本循环(Basic Cycle):呈现一种循环的逻辑关系,适合展示具有周期性或循环性的流程、事件等。比如可以用于展示产品的生命周期、业务的循环流程等。
  • [color=var(--md-box-samantha-deep-text-color) !important]基本辐射(Basic Radial):以一个中心为原点向四周辐射状分布,可突出中心主题与各个分支之间的关系,常用于表示中心思想与多个相关方面的联系,比如公司的核心业务与各个业务板块的关系。
  • [color=var(--md-box-samantha-deep-text-color) !important]层次结构(Organization Chart):专门用于展示组织架构,清晰地呈现上下级关系、部门之间的隶属关系等,是企业、机构等组织展示内部结构的常用布局。
  • [color=var(--md-box-samantha-deep-text-color) !important]列表(List):以简单的列表形式排列内容,适用于列举一系列没有明显层级或逻辑顺序关系,但需要并列展示的信息,例如项目的任务清单、产品的特点列表等。
  • [color=var(--md-box-samantha-deep-text-color) !important]流程(Process):按照先后顺序展示步骤或流程,非常适合用于呈现工作流程、生产流程、审批流程等具有明确顺序的内容。
  • [color=var(--md-box-samantha-deep-text-color) !important]关系(Relationship):用于强调不同元素之间的各种关系,如因果关系、包含关系、对立关系等,可以根据具体的关系类型选择合适的子布局。
  • [color=var(--md-box-samantha-deep-text-color) !important]矩阵(Matrix):以矩阵的形式展示信息,行和列可以分别表示不同的分类或属性,方便对比和分析不同类别之间的关系,常用于市场分析、数据对比等场景。
  • [color=var(--md-box-samantha-deep-text-color) !important]金字塔(Pyramid):体现一种层级递减或递增的结构,可用于展示等级制度、资源分配、重要性程度等具有层次差异的内容,比如企业的管理层级、项目的优先级等。
  • [color=var(--md-box-samantha-deep-text-color) !important]V 型列表(Venn):主要用于展示多个集合之间的交集、并集等关系,适合用于分析不同群体、概念、事物之间的重叠和差异部分,比如不同市场区域的客户群体特征分析等。
  • [color=var(--md-box-samantha-deep-text-color) !important]标题和内容(Title and Content):这种布局将标题与详细内容分开,突出标题的同时展示相关的具体信息,常用于幻灯片的标题页、文档的章节标题等












WPS编程问题,程序不通过。

  1. Sub aa()
  2.    Dim SmtArt As SmartArt
  3.    Dim Shp As Shape
  4.        Set Shp = Sheet1.Shapes(1)
  5.        Set SmtArt = Shp.SmartArt
  6.        With SmtArt
  7.            Debug.Print .Nodes.Count, .Layout.Name, .Layout.Id
  8.        End With
  9.        Stop
  10.        Set Shp = Sheet2.Shapes(1)
  11.        Set SmtArt = Shp.SmartArt
  12.        With SmtArt
  13.            Debug.Print .Nodes.Count, .Layout.Name, .Layout.Id
  14.        End With
  15.        Stop

  16. End Sub

  17. Sub llll()
  18.    Dim Shp As Shape, Shps As Shapes
  19.        Set Shps = Application.ActivePresentation.Slides(1).Shapes
  20.    Dim SmtArt As SmartArt, Ss As SmartArt, sLay As SmartArtLayout
  21.        For Each Shp In Shps
  22.            If Shp.Type <> msoSmartArt Then
  23.                Shp.Delete
  24.            ElseIf Shp.Type = msoSmartArt Then
  25.                Set SmtArt = Shp.SmartArt
  26.                Debug.Print SmtArt.Layout.Name
  27.                Stop
  28.                Shp.SmartArt.Layout = oSmartArtLayoutHierarchyList
  29.            End If
  30.        Next Shp
  31.       
  32.        'S ='urn:microsoft.com/office/officeart/2008/layout/SquareAccentList'
  33.        'Set SmtArt = Shps.AddSmartArt(S, 10, 10, 400, 300)
  34.        SmtArt.Layout = a
  35.        Stop
  36. End Sub

  37. Function SmartArtAttribute(SmtArt As SmartArt)
  38.    Dim SmtArt As SmartArt, S As SmartArt
  39.      
  40.      With SmtArt
  41.          Debug.Print .Layout.Id
  42.          
  43.      End With
  44. End Function
复制代码



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

本版积分规则

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

GMT+8, 2024-11-18 23:40 , Processed in 0.043472 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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