如何通过 VBA 更改 think cell 对象的名称?
How to change a think cell object's name through VBA?
我正在组装一个 VBA 模块,计算 Excel 中的一些数据并将其粘贴到 powerpoint 演示文稿中。
在这个 powerpoint 演示文稿中,我有一些 think cell 图表,我知道我可以在 tcaddin 的帮助下更新它们(见下面的代码)。但我没有找到的是如何识别给定幻灯片上的 think cell 图表,或更改此对象的名称。我需要这样做的原因是我想复制一个图表并用另一组数据更新它而不是已经使用的数据,但是如果我用 updatechart 方法这样做,它会同时更新原始图表和新图表.我事先不知道我总共会有多少张图表,所以我无法制作它们并提前命名它们。
我尝试使用 "ActiveWindow.Selection.ShapeRange.Name" 来识别我的 think cell 对象的名称,但这不起作用(错误 '-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 对象上的一些 属性,这将允许我更改图表的名称或创建一个新图表(并设置其名称).
感谢您的帮助。
VBA 仅适用于原生形状,不适用于 Think-Cell 形状。以下是 Think-Cell 关于该主题的声明:Can I use my VBA macros with think-cell elements?
UpdateChart() 中的第一个参数可以是整个演示文稿或幻灯片范围。这意味着您可以使用手动命名的 think-cell 图表创建一张模板幻灯片,然后通过 VBA 复制整张幻灯片。新复制的幻灯片上的 think-cell 图表将与原始幻灯片同名。然后,您可以 运行 UpdateChart() 仅指定新幻灯片作为更新其数据的第一个参数。
我正在组装一个 VBA 模块,计算 Excel 中的一些数据并将其粘贴到 powerpoint 演示文稿中。 在这个 powerpoint 演示文稿中,我有一些 think cell 图表,我知道我可以在 tcaddin 的帮助下更新它们(见下面的代码)。但我没有找到的是如何识别给定幻灯片上的 think cell 图表,或更改此对象的名称。我需要这样做的原因是我想复制一个图表并用另一组数据更新它而不是已经使用的数据,但是如果我用 updatechart 方法这样做,它会同时更新原始图表和新图表.我事先不知道我总共会有多少张图表,所以我无法制作它们并提前命名它们。
我尝试使用 "ActiveWindow.Selection.ShapeRange.Name" 来识别我的 think cell 对象的名称,但这不起作用(错误 '-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 对象上的一些 属性,这将允许我更改图表的名称或创建一个新图表(并设置其名称).
感谢您的帮助。
VBA 仅适用于原生形状,不适用于 Think-Cell 形状。以下是 Think-Cell 关于该主题的声明:Can I use my VBA macros with think-cell elements?
UpdateChart() 中的第一个参数可以是整个演示文稿或幻灯片范围。这意味着您可以使用手动命名的 think-cell 图表创建一张模板幻灯片,然后通过 VBA 复制整张幻灯片。新复制的幻灯片上的 think-cell 图表将与原始幻灯片同名。然后,您可以 运行 UpdateChart() 仅指定新幻灯片作为更新其数据的第一个参数。