如何通过VBA更改思维单元对象的名称?

时间:2019-09-30 13:29:32

标签: excel vba powerpoint

我正在整理一个VBA模块,该模块可以在Excel中计算一些数据并将其粘贴到PowerPoint演示文稿中。 在此powerpoint演示中,我有一些思想单元图,我知道我可以在tcaddin的帮助下进行更新(请参见下面的代码)。不过,我没有找到如何在给定幻灯片上识别思维单元图或更改该对象的名称的方法。我需要这样做的原因是,我想复制一个图表并使用另一组数据(而不是已经使用过的数据)进行更新,但是如果我使用updatechart方法进行操作,它将同时更新原始图表和新图表。 。我之前不知道总共有多少张图表,所以我无法生成它们并预先命名。

我尝试使用“ ActiveWindow.Selection.ShapeRange.Name”来标识我的思想单元对象的名称,但这不起作用(错误'-21447188160(8048240):选择(未知成员):无效请求。当前未选择任何合适的条件) 我已经搜索了类似的问题,但是没有找到与我的问题相匹配的问题。 Think Cell在这个问题上的帮助还不够深入(https://www.think-cell.com/en/support/manual/exceldataautomation.shtml),我在那里找不到任何解决方案。

Dim tcaddin As Object

    pptFileName = WSExec.Range("B18").Value

' Get the think-cell add-in object
Set tcaddin = Application.COMAddIns("thinkcell.addin").Object

'Get powerpoint object:
 On Error Resume Next
 Set ppApp = GetObject(, "PowerPoint.Application")
 On Error GoTo 0

'Get the presentation :
 If ppApp Is Nothing Then
     Set ppApp = New PowerPoint.Application
     Set ppPres = ppApp.Presentations.Open( _
      Filename:=pptFileName, _
       Untitled:=msoFalse, _
       WithWindow:=msoTrue) 
 Else
     Set ppPres = ppApp.Presentations.Item(1)
 End If

Call tcaddin.UpdateChart(ppPres, "ChartTrafficXEvol", WSExecSum.Range("J33:N52"), False)

我没有输出可提供,但是我想要的是tcaddin对象上的一些属性,该属性使我可以更改图表的名称或创建新的图表(并设置其名称)。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

VBA仅可用于本机形状,不适用于Think-Cell形状。这是Think-Cell关于该主题的声明:Can I use my VBA macros with think-cell elements?

答案 1 :(得分:0)

UpdateChart()中的第一个参数可以是整个演示文稿或幻灯片范围。这意味着您可以使用手动命名的思维单元图创建一个模板幻灯片,然后通过VBA复制整个幻灯片。新复制的幻灯片上的思维单元图将与原始名称相同。然后,您可以运行UpdateChart(),仅将新幻灯片指定为更新其数据的第一个参数。