了解最新技术文章
think cell 允许您通过 API 以编程方式控制某些功能。在这里,您可以找到所有可用 API 函数的概述,以及有关如何设置开发环境以编写宏、加载项或访问它们的独立程序的一般说明。
F.1
入门
F.2
API参考
think cell 的 API 已集成到 Office 自动化模型中,因此可以通过任何可用于对 Office 进行编程的语言进行访问,例如 Visual Basic for Applications (VBA) 或 C#。
think cell 的入口点是 think cell 加载项对象。可以通过集合访问它Application.COMAddIns
。对 think cell 的调用始终是后期绑定的,因此无需添加类型库或引用。请参阅 Microsoft 的知识库以获取解释:
在自动化中使用早期绑定和后期绑定
某些 API 函数是 PowerPoint 中 think cell 加载项对象的方法,以及 Excel 中某些 think cell 加载项对象的方法。我们将用于tcPpAddIn
引用 PowerPoint 加载项和tcXlAddIn
引用 Excel 加载项。
要使用 Visual Basic for Applications (VBA) 编写宏,请使用集成到 Office 主机应用程序中的开发环境。Alt可以通过按+来访问它F11。宏的定义通常包含在模块中,您可以通过Insert → Module添加该模块。Alt您可以通过按+查看为给定文档定义的所有宏F8。
要指示对 think cell 加载项的方法调用是后期绑定的,您需要将包含对其引用的变量声明为Object
:
Dim tcaddin As Object Set tcaddin = Application.COMAddIns("thinkcell.addin").Object
默认情况下始终引用 Office 主机应用程序的类型库。如果需要访问另一个 Office 应用程序的对象模型,则需要添加其类型库作为引用。
例如,如果您想在更新 think cell 图表之前使用 PowerPoint 中的宏操作 Excel 工作表中的数据,则需要通过 VBA 开发中的工具 → 引用对话框手动添加Microsoft Excel 16.0对象库环境。
注意:16.0是Office 2016及更高版本的版本号。对于 Office 2010 或 2013,您需要分别使用 14.0 或 15.0 对象库。如果您安装了多个版本的 Office,“引用”对话框将仅显示安装的最新版本的对象库。下面我们假设您使用的是 Office 2016 或更高版本。
使用Application.COMAddIns("thinkcell.addin").Object
始终会获取当前 Office 主机应用程序的 think cell 加载项对象,即tcPpAddIn
或tcXlAddIn
,具体取决于您是在 PowerPoint 还是 Excel 中使用它。要获取对其他 Office 应用程序中的加载项对象的引用并访问它公开的 API 函数,请通过适当的应用程序实例获取它。
tcXlAddIn
例如,要从 PowerPoint获取引用:
Dim xlapp As ObjectSet xlapp = New Excel.ApplicationDim tcXlAddIn As ObjectSet tcXlAddIn = xlapp.COMAddIns("thinkcell.addin").Object
请注意,这需要添加 Excel 对象库作为引用。
我们建议使用该Option Explicit
语句,它强制显式声明所有变量,从而有助于避免常见的编程错误并改进 IntelliSense 提供的建议。您可以通过激活“工具” → “选项” → “代码设置” → “需要变量声明”将其自动添加到所有模块。它包含在我们所有的代码示例中。
在开发在 Office 主机应用程序内运行的加载项和文档代码扩展以及开发独立应用程序时,您可以使用 C# 中的 think cell API。
下面我们假设您使用 Visual Studio 2017 或更高版本使用 C# 开发 Office 解决方案。有关插件开发的更具体设置说明,请参阅下一节。对于每个代码示例,我们将指示要使用哪个 Visual Studio 项目模板。
要对 think cell 加载项对象进行后期绑定的方法调用,请将包含对 think cell 加载项对象的引用的变量声明为dynamic
; 这也是编译器在将引用声明为 时推断出的类型var
,因此您可以简单地编写:
var tcPpAddIn = ppapp.COMAddIns.Item("thinkcell.addin").Object;
以下是对加载 think cell 的ppapp
PowerPoint 对象的引用。Application
要访问 Office 应用程序的对象模型,您需要添加其类型库或其主互操作程序集 (PIA) 作为对项目的引用。我们建议尽可能添加类型库,因为 Visual Studio 会自动添加对相应 PIA 的引用(如果可用),或者从类型库生成互操作程序集(如果没有)(请参阅此处)。
例如,为了能够获取对上述 think cell 加载项对象的引用,您需要添加在引用管理器对话框的COM →类型库选项卡中找到的Microsoft PowerPoint 16.0 对象库。根据您的项目类型,可以通过右键单击“解决方案资源管理器”中的“引用”或“依赖项”并选择“添加 (COM) 引用”来访问此对话框。
注意:16.0是Office 2016及更高版本的版本号。通过使用“嵌入互操作类型”选项(默认情况下为对 COM 类型库的引用启用该选项),使用此引用编译的应用程序将向后(和向前)兼容其他版本的 Office,只要使用的所有接口都存在于其版本中。对象模型。请参阅此处了解更多信息。
think cell 的 API 函数使用 COM 指示错误HRESULT
。其中一些会自动映射到相应的 .NET 异常类,请参阅如何:映射 HRESULT 和异常。
要开发 Office 加载项或 Office 文档的代码扩展,您可以使用PowerPoint/
默认情况下始终加载所选模板的 Office 主机应用程序的 PIA。如果您需要访问另一个 Office 应用程序的对象模型,则需要添加其类型库作为引用,如上所述。
注意:think cell 的 API 无法从 Office Web加载项使用(不幸的是,现在 Microsoft 简称为“Office 加载项”),因为它们无法直接与 Office 应用程序的对象模型交互,特别是无法与 COM 加载项交互。诸如 think cell 之类的 ins。
F.2.1
使用 Excel 数据更新元素和演示模板
F.2.2
控制风格
F.2.3
导入 Mekko Graphics 图表
F.2.4
各种各样的
本部分中的函数可用于通过 Excel 中的数据以编程方式更新 think cell 元素(通常是演示文稿模板中的占位符)。UpdateChart
使用作为参数传递的 Excel 范围中的数据更新由模板中指定的名称指定的 think cell 元素。另请参阅自动化简介以了解如何准备模板。
PresentationFromTemplate
使用链接的 Excel 工作簿中的数据实例化演示文稿模板。另请参阅Excel 数据链接了解如何创建 Excel 链接。
本部分中的函数是Excel 中think cell插件的方法。
tcXlAddIn.UpdateChart( _ target As Object, _ strName As String, _ rgData As Excel.Range, _ bTransposed As Boolean _ )
void tcXlAddIn.UpdateChart( object target, string strName, Excel.Range rgData, bool bTransposed);
此函数使用 中包含的数据更新target
name中的所有元素。为了使图表正确解释数据,范围必须符合其默认数据表布局或其转置版本,另请参阅从 Excel 创建图表和调整数据布局。分别通过设置为或 来指示是否使用默认版本或转置版本。对于图表以外的元素(例如表格), 的值将被忽略。strName
rgData
rgData
bTransposed
false
true
bTransposed
target
必须是一个Presentation
or SlideRange
,或者一个单一Slide
的Master
or CustomLayout
。
名称strName
的匹配不区分大小写。之前必须已使用UpdateChart Name属性控件在 PowerPoint 中对其进行分配,如自动化简介中所述。
为了确保定位到正确的元素,请确保它们是唯一在作为 传递的对象中将其UpdateChart 名称设置为 的元素。strName
pres
如果在调用此函数时目标元素链接到 Excel 数据范围,则该链接将被破坏。之后,该元素将不会链接到任何 Excel 区域。
要使用这些示例,请按照自动化简介中所述准备演示文稿,并将其另存为C:SamplesUpdateChart emplate.pptx
.
要使用此示例,请将其添加到 Excel 工作簿中的模块中。
它需要引用Microsoft PowerPoint 16.0 对象库(有关详细信息,请参阅Visual Basic for Applications )。
在工作簿中运行将使用其第一个工作表UpdateChart_Sample
范围内包含的数据更新演示模板中的图表。A1:D5
Option Explicit Sub UpdateChart_Sample() ' Get the range containing the new data Dim rng As Excel.Range Set rng = ActiveWorkbook.Sheets(1).Range("A1:D5") ' Get the think cell add-in object Dim tcXlAddIn As Object Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object ' Get a PowerPoint instance. Hold on to this ' object as long as you want to access the ' generated presentations. There can only be a ' single PowerPoint instance. If there is no ' PowerPoint running, one will be started. ' Otherwise the existing one is used. Dim ppapp As Object Set ppapp = New PowerPoint.Application Dim pres As PowerPoint.Presentation ' PowerPoint window visible ' Set pres = ppapp.Presentations.Open( _ ' Filename:="C:\Samples\UpdateChart\template.pptx", _ ' Untitled:=msoTrue) ' PowerPoint window invisible Set pres = ppapp.Presentations.Open( _ Filename:="C:\Samples\UpdateChart\template.pptx", _ Untitled:=msoTrue, _ WithWindow:=msoFalse) Call tcXlAddIn.UpdateChart(pres, "Chart1", rng, False) ' Save the updated presentation pres.SaveAs ("C:\Samples\UpdateChart\template_updated.pptx") pres.Close ppapp.Quit End Sub
Program.cs
要使用此示例,请将C#控制台应用程序项目模板中的代码替换为它。
它需要引用Microsoft PowerPoint 16.0 对象库、Microsoft Excel 16.0 对象库和Microsoft Office 16.0 对象库(有关详细信息,请参阅C#)。
运行生成的应用程序将更新演示模板中的图表,以包含名为“Series 1”且值为 1、2、3 的单个系列,并将结果保存为template_updated.pptx
.
using Excel = Microsoft.Office.Interop.Excel;using PowerPoint = Microsoft.Office.Interop.PowerPoint;using Office = Microsoft.Office.Core;namespace ConsoleApplication_UpdateChart{ class Program { static void Main() { Excel.Application xlapp = new Excel.Application { Visible = true }; Excel.Workbook workbook = xlapp.Workbooks.Add(1); Excel.Worksheet worksheet = (Excel.Worksheet)workbook.Sheets[1]; worksheet.Cells[3, 1] = "Series 1"; worksheet.Cells[3, 2] = 1; worksheet.Cells[3, 3] = 2; worksheet.Cells[3, 4] = 3; PowerPoint.Application ppapp = new PowerPoint.Application(); PowerPoint.Presentation presentation = ppapp.Presentations.Open( "C:\Samples\UpdateChart\template.pptx", Office.MsoTriState.msoFalse, Office.MsoTriState.msoTrue ); var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object; tcXlAddIn.UpdateChart( presentation, "Chart1", worksheet.get_Range("A1", "D3"), false ); presentation.SaveAs("C:\Samples\UpdateChart\template_updated.pptx"); presentation.Close(); ppapp.Quit(); workbook.Close(false); xlapp.Quit(); } }}
tcXlAddIn.PresentationFromTemplate( _ wb As Excel.Workbook, _ strTemplate As String, _ ppapp As PowerPoint.Application _ ) As PowerPoint.Presentation
PowerPoint.Presentation tcXlAddIn.PresentationFromTemplate( Excel.Workbook wb, string strTemplate, PowerPoint.Application ppapp);
wb
此函数使用 Excel 工作簿和带有文件名的模板之间的数据链接,strTemplate
通过使用链接到的范围中的数据更新链接元素来实例化该模板。结果是 PowerPoint 实例中的一个新演示文稿ppapp
。
strTemplate
可以是完整路径,也可以是相对路径,相对于 Excel 工作簿文件的位置wb
。
strTemplate
其中链接到 Excel 工作簿的所有元素wb
都会更新(无论它们是否设置为自动更新)。在生成的演示文稿中,它们的数据链接被破坏,以防止对这些元素进行进一步更改。
strTemplate
链接到 Excel 工作簿以外的元素wb
保持不变并仍然链接,因此可以通过将此函数的结果保存为新模板,然后对下一个工作簿再次调用此函数来更新多个 Excel 工作簿的链接。
如果要使用 Excel 链接控制图表段的颜色或表格单元格的格式,您可以将配色方案设置为使用数据表填充在顶部(请参阅配色方案)或使用数据表...选项(请参阅格式化表)分别。同样,要使用 Excel 链接控制数字格式,请将其设置为使用 Excel 格式(请参阅数字格式)。
在调用之前,请确保在 Excel 中设置相关的格式选项和各个单元格的数字格式PresentationFromTemplate
。
要使用这些示例,请首先创建一个演示文稿,其中包含链接到G1:K4
Excel 工作簿中第一个工作表范围的堆积图表,如从 Excel 创建图表中所述。将生成的演示文稿C:SamplesPresentationFromTemplate emplate.pptx
和工作簿保存data.xlsx
在同一目录中。
data.xlsx
要使用此示例,请将其添加到如上所述准备的Excel 工作簿中的模块中。
它需要引用Microsoft PowerPoint 16.0 对象库(有关详细信息,请参阅Visual Basic for Applications )。
运行PresentationFromTemplate_Sample
将更改 cell 中的值Sheet1!H3
,该值链接到 中包含的图表第一个系列的第一个值template.pptx
,从i=1
到10
,创建一个新的演示文稿,模板中的图表更新为包含该值,并且未链接到不再需要工作簿,并将其保存在与output_i.pptx
模板相同的目录中。
Option ExplicitSub PresentationFromTemplate_Sample() ' Get the range to modify. It is more efficient ' to do this once rather than within the loop. Dim rng As Excel.Range Set rng = ActiveWorkbook.Sheets(1).Cells(3, 8) ' Get the think cell add-in object Dim tcXlAddIn As Object Set tcXlAddIn = Application.COMAddIns("thinkcell.addin").Object ' Get a PowerPoint instance. Hold on to this ' object as long as you want to access the ' generated presentations. There can only be a ' single PowerPoint instance. If there is no ' PowerPoint running, one will be started. ' Otherwise the existing one is used. Dim ppapp As Object Set ppapp = New PowerPoint.Application Dim i As Integer For i = 1 To 10 ' Modify the range value. ' Note: Avoid selecting the cell prior to ' changing it. It is very slow and has ' undesirable side-effects. ' BAD: ' rng.Select ' ActiveWindow.Selection.Value = 0 ' GOOD: rng.Value = i ' Generate a new presentation based on the ' linked template. Dim pres As PowerPoint.Presentation Set pres = tcXlAddIn.PresentationFromTemplate( _ Excel.ActiveWorkbook, "template.pptx", ppapp _ ) ' If you want to modify the new presentation ' before saving it this is the place to do it. ' Save the new presentation pres.SaveAs "C:SamplesPresentationFromTemplateoutput_" & i & ".pptx" ' Explicitly close the presentation when we ' are done with it to free its memory. ' Letting the object go out of scope is not ' sufficient. pres.Close NextEnd Sub
Program.cs
要使用此示例,请将C#控制台应用程序项目模板中的代码替换为它。
它需要引用Microsoft PowerPoint 16.0 对象库、Microsoft Excel 16.0 对象库和Microsoft Office 16.0 对象库(有关详细信息,请参阅C#)。
运行生成的应用程序将明显打开 Excel,加载工作簿data.xlsx
,更改单元格中的值H3
,该值链接到 中包含的图表第一个系列的第一个值template.pptx
,从i=1
到10
,创建一个新的演示文稿,并更新模板中的图表包含该值,并且该值不再链接到工作簿,并将其保存在与output_i.pptx
模板相同的目录中。
using PowerPoint = Microsoft.Office.Interop.PowerPoint;using Excel = Microsoft.Office.Interop.Excel;namespace ConsoleApplication_PresentationFromTemplate{ class Program { static void Main() { var xlapp = new Excel.Application { Visible = true }; var tcXlAddIn = xlapp.COMAddIns.Item("thinkcell.addin").Object; var workbook = xlapp.Workbooks.Open("C:\Samples\PresentationFromTemplate\data.xlsx"); var ppapp = new PowerPoint.Application(); for (var i = 1; i <= 10; ++i) { workbook.Sheets[1].Cells[3, 8] = i; PowerPoint.Presentation presentation = tcXlAddIn.PresentationFromTemplate( workbook, "C:\Samples\PresentationFromTemplate\template.pptx", ppapp ); presentation.SaveAs("C:\Samples\PresentationFromTemplate\output_" + i + ".pptx"); presentation.Close(); } ppapp.Quit(); workbook.Close(false); xlapp.Quit(); } }}
本部分中的函数可用于以编程方式加载、检查和删除 think cell 样式。LoadStyle
将样式从样式文件加载到母版幻灯片或单个自定义布局中。LoadStyleForRegion
将样式文件中的样式加载到自定义布局的特定区域中。GetStyleName
返回加载到主布局或自定义布局中的样式的名称。RemoveStyles
从自定义布局中删除所有样式。
有关创建和编辑样式的详细信息,请参阅创建 think cell 样式和样式文件格式。有关加载样式文件的更多信息,请参阅加载样式文件。
本部分中的函数是PowerPoint 中think cell插件的方法。
tcPpAddIn.LoadStyle( _ CustomLayoutOrMaster As Object, _ FileName As String )
void tcPpAddIn.LoadStyle( object CustomLayoutOrMaster, string FileName);
此函数将样式文件中包含的样式加载FileName
到通过参数指定的主布局或自定义布局中CustomLayoutOrMaster
。
CustomLayoutOrMaster
必须是CustomLayout
或Master
。
当应用于已设置区域样式的自定义布局时(请参阅LoadStyleForRegion),区域样式将被删除。这意味着在加载仅限于某个区域的样式之前,您需要使用此函数加载应应用于幻灯片其余部分的样式。
当应用于母版时,加载到该母版中包含的自定义布局中的任何样式(区域性的和无限制的)都将被删除。这意味着,在使用此函数加载应用于特定自定义布局的样式之前,您需要将应用于没有特定样式的自定义布局的样式加载到母版中。
要使用此示例,请将以下代码添加到 PowerPoint 中的模块中(有关详细信息,请参阅Visual Basic for Applications )。
Option Explicit Sub LoadStyle_Sample() ' Get the think cell add-in object Dim tcPpAddIn As Object Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object Dim master As Master Set master = Application.ActivePresentation.Designs(1).SlideMaster Dim style As String style = "C:somepathstylesstyle.xml" Call tcPpAddIn.LoadStyle(master, style)End Sub
tcPpAddIn.LoadStyleForRegion( _ CustomLayout As PowerPoint.CustomLayout, _ FileName As String, _ Left as Single, _ Top as Single, _ Width as Single, _ Height as Single _)
void tcPpAddIn.LoadStyleForRegion( PowerPoint.CustomLayout CustomLayout, string FileName, float Left, float Top, float Width, float Height);
此函数将样式文件加载FileName
到自定义布局中,并将其限制在由, , ,CustomLayout
给定的区域。在幻灯片的其余部分,将应用加载到母版中的样式或之前加载到自定义布局中的样式。Left
Top
Width
Height
LoadStyle
参数Left
、Top
、Width
、Height
以 PowerPoint 点给出。Left
并Top
分别指定该区域的左边缘和上边缘与自定义布局的左边缘和上边缘的距离。通常您会将它们设置为幻灯片总高度和宽度的分数。例如,对于覆盖自定义布局右侧三分之二的区域,您可以设置
Left = CustomLayout.Width / 3Top = 0Width = CustomLayout.Width * 2 / 3Height = CustomLayout.Height
您还可以手动将形状添加到幻灯片或自定义布局,以编程方式查询其属性Left
, Top
, Width
,Height
并使用值LoadStyleForRegion
将样式限制为形状覆盖的同一区域。
think cell 每个自定义布局最多支持两种样式。一个设置为LoadStyle
并涵盖不限于区域的所有内容,另一个设置为LoadStyleForRegion
。
要使用此示例,请将以下代码添加到 PowerPoint 中的模块中(有关详细信息,请参阅Visual Basic for Applications )。
Option Explicit Sub LoadStyleForRegion_Sample() ' Get the think cell add-in object Dim tcPpAddIn As Object Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object Dim layout As CustomLayout Set layout = Application.ActivePresentation.Designs(1).SlideMaster.CustomLayouts(2) ' Define a region covering the left half of the custom layout Dim left, top, width, height As Single left = 0 top = 0 width = layout.Width / 2 height = layout.Height Dim style As String style = "C:somepathstylesstyle.xml" Call tcPpAddIn.LoadStyleForRegion(layout, style, left, top, width, height)End Sub
think cell 13 及更高版本受支持。
tcPpAddIn.GetStyleName( _ CustomLayoutOrMaster As Object _ ) As String
string tcPpAddIn.GetStyleName( object CustomLayoutOrMaster);
CustomLayout
此函数返回加载到或 或 中的样式的名称。这与相应样式文件的元素属性中指定的名称相同(请参阅style)。Master
CustomLayoutOrMaster
name
<style>
当没有样式加载到 时,它返回一个空字符串CustomLayoutOrMaster
。请注意,当 think cell 处于活动状态时,母版中始终会加载样式,并且样式名称不能为空。
如果为 a 返回名称,则它是使用LoadStyleCustomLayout
加载到其中的样式的名称,而不是使用LoadStyleForRegion加载的样式的名称(如果有)。
要使用此示例,请将以下代码添加到 PowerPoint 中的模块中(有关详细信息,请参阅Visual Basic for Applications )。
Option ExplicitSub GetStyleName_Sample() ' Get the think cell add-in object Dim tcPpAddIn As Object Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object ' Get the Master of the first slide of the current presentation Dim master As Master Set master = Application.ActivePresentation.Slides(1).Master ' Print the name of the style loaded to the debug console Dim name As String name = tcPpAddIn.GetStyleName(master) Debug.Print nameEnd Sub
tcPpAddIn.RemoveStyles( _ CustomLayout As PowerPoint.CustomLayout _ )
void tcPpAddIn.RemoveStyles( PowerPoint.CustomLayout CustomLayout);
此函数从自定义布局中删除所有样式CustomLayout
。然后,应用加载到母版中的样式。可能会有一种样式加载到自定义布局中,而另一种样式则限制在自定义布局的特定区域。当RemoveStyles
删除所有样式时,两者都将被删除。加载到母版中的样式无法删除,因为始终需要有一个与母版关联的有效样式。它可以用不同的样式文件覆盖。
要使用此示例,请将以下代码添加到 PowerPoint 中的模块中(有关详细信息,请参阅Visual Basic for Applications )。
Option Explicit Sub RemoveStyles_Sample() ' Get the think cell add-in object Dim tcPpAddIn As Object Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object Dim layout As CustomLayout Set layout = Application.ActivePresentation.Designs(1).SlideMaster.CustomLayouts(2) Call tcPpAddIn.RemoveStyles(layout)End Sub
本部分中的函数可用于以编程方式将使用 Mekko Graphics 创建的图表导入到 think cell 并进行检查。ImportMekkoGraphicsCharts
将 Mekko Graphics 图表替换为等效的 think cell 图表。GetMekkoGraphicsXML
提取 Mekko Graphics 图表的 XML 定义。
本部分中的函数是PowerPoint 中think cell插件的方法。
think cell 13 及更高版本受支持。
tcPpAddIn.ImportMekkoGraphicsCharts ( _ ashp As PowerPoint.Shape() _) As PowerPoint.Slide
PowerPoint.Slide tcPpAddIn.ImportMekkoGraphicsCharts( PowerPoint.Shape[] ashp);
此函数将传递给它的 s 数组中的所有 Mekko Graphics 图表替换Shape
为等效的 think cell 图表。这些形状必须全部位于同一张幻灯片上。在修改幻灯片之前,该函数将复制未修改的幻灯片并将其直接插入到修改后的版本之后。
该函数返回对此副本的引用(如果已创建)。
如果演示文稿未修改,例如因为数组不包含任何 Mekko Graphics 图表,则它返回Nothing
/ 。null
要使用此示例,请将其添加到 PowerPoint 中的模块(有关详细信息,请参阅Visual Basic for Applications)。
运行ImportAll
演示文稿时将浏览演示文稿中的幻灯片,并将所有可见的 Mekko Graphics 图表替换为等效的 think cell 图表,并在修改之前为包含一张幻灯片的每张幻灯片制作一份副本。
Option ExplicitSub ImportAll() ' Get reference to think cell Object Dim tcPpAddIn As Object Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object ' Iterate over copy of original Slides to avoid ' iterating over copies inserted by ImportMekkoGraphicsCharts again Dim SlidesCopy As New Collection Dim Slide As PowerPoint.Slide For Each Slide In ActivePresentation.Slides SlidesCopy.Add Slide Next Slide For Each Slide In SlidesCopy ' Construct Array containing only visible shapes on slide Dim visibleShapes() As PowerPoint.Shape ReDim visibleShapes(1 To Slide.Shapes.Count) Dim shapeIndex As Long For shapeIndex = 1 To Slide.Shapes.Count If Slide.Shapes(shapeIndex).Visible Then Set visibleShapes(shapeIndex) = Slide.Shapes(shapeIndex) End If Next shapeIndex ' Pass Array to ImportMekkoGraphics and store return value Dim CopySlide As PowerPoint.Slide Set CopySlide = tcPpAddIn.ImportMekkoGraphicsCharts(visibleShapes) ' If Slide was modified... If Not CopySlide Is Nothing Then ' ... do things with copy of unmodified slide End If Next SlideEnd Sub
要使用此示例,请将此方法添加到ThisAddIn
C# PowerPoint VSTO 外接程序项目模板的类中(有关详细信息,请参阅C#和外接程序开发)。
private void ImportAll(PowerPoint.Presentation presentation) { var tcPpAddIn = presentation.Application.COMAddIns.Item("thinkcell.addin").Object; foreach (PowerPoint.Slide slide in presentation.Slides.Cast<PowerPoint.Slide>().ToList()) { PowerPoint.Slide slideCopy = tcPpAddIn.ImportMekkoGraphicsCharts( slide.Shapes.Cast<PowerPoint.Shape>().ToArray() ); } }
将以下行添加到要在打开的每个演示文稿上ThisAddIn_Startup
运行的方法:ImportAll
Application.PresentationOpen += new PowerPoint.EApplication_PresentationOpenEventHandler(ImportAll);
think cell 13 及更高版本受支持。
tcPpAddIn.GetMekkoGraphicsXML ( _ shp As PowerPoint.Shape _) As String
string tcPpAddIn.GetMekkoGraphicsXML( PowerPoint.Shape shp);
shp
此函数以字符串形式返回 Mekko Graphics 图表的 XML 。它不会修改传递给它的形状。
如果shp
不是 Mekko Graphics 图表,E_INVALIDARG (0x80070057)
则会引发错误。
要使用此示例,请将以下代码添加到 PowerPoint 中的模块中(有关详细信息,请参阅Visual Basic for Applications )。
Option ExplicitSub GetMekkoGraphicsXMLOfAllShapes() ' Get reference to think cell Object Dim tcPpAddIn As Object Set tcPpAddIn = Application.COMAddIns("thinkcell.addin").Object ' Go through the slides in the presentation and ' output the XML of each Mekko Graphics chart on the slide ' to the debug console Dim slide As PowerPoint.slide For Each slide In Application.ActivePresentation.Slides Dim shape As PowerPoint.shape For Each shape In slide.Shapes Debug.Print tcPpAddIn.GetMekkoGraphicsXML(shape) Next shape Next slideEnd Sub
要使用此示例,请将控制台应用程序Program.cs
中的代码替换为它。
它需要引用Microsoft PowerPoint 16.0 对象库和Microsoft Office 16.0 对象库(有关详细信息,请参阅C#)。
运行该应用程序将浏览其中的演示文稿C:SamplesGetMekkoGraphicsXMLpresentation.pptx
并将其中包含的 Mekko Graphics 图表的 XML 打印到控制台。
using PowerPoint = Microsoft.Office.Interop.PowerPoint;using Office = Microsoft.Office.Core;namespace Sample{ class Program { static void Main() { var ppapp = new PowerPoint.Application(); var presentation = ppapp.Presentations.Open( "C:\Samples\GetMekkoGraphicsXML\presentation.pptx", /*ReadOnly*/Office.MsoTriState.msoTrue, /*Untitled*/Office.MsoTriState.msoTrue, /*WithWindow*/Office.MsoTriState.msoFalse ); var tcPpAddIn = ppapp.COMAddIns.Item("thinkcell.addin").Object; foreach (PowerPoint.Slide slide in presentation.Slides) { foreach (PowerPoint.Shape shape in slide.Shapes) { string xml = tcPpAddIn.GetMekkoGraphicsXML(shape); Console.WriteLine(xml); } } presentation.Close(); ppapp.Quit(); } }}
本部分中的函数是PowerPoint 中think cell插件的方法。
think cell 13 及更高版本受支持。
tcPpAddIn.StartTableInsertion()
void tcPpAddIn.StartTableInsertion();
调用此方法与单击PowerPoint 中“元素”菜单中的“表”具有相同的效果。
24小时免费咨询
请输入您的联系电话,座机请加区号