F. Documentación de API

think-cell le permite controlar mediante programación algunas funciones a través de una API. Aquí encontrará una visión general de todas las funciones disponibles de la API, así como instrucciones generales sobre cómo configurar su entorno de desarrollo para escribir macros, complementos o programas independientes que accedan a ellas.

F.1
Primeros pasos
F.2
Referencia de API

F.1 Primeros pasos

La API de think-cell está integrada en el modelo de automatización de Office, de manera que puede accederse a ella en cualquier lenguaje en el que se programe Office, como Visual Basic para Aplicaciones (VBA) o C#.

El punto de entrada a think-cell es el objeto de complemento think-cell. Puede accederse a él por medio de la colección Application.COMAddIns. Las llamadas a think-cell son siempre tardías, por lo que no hay ninguna biblioteca de tipos ni referencia que añadir. Consulte la base de conocimientos de Microsoft siguiente para obtener más información:

Uso de la vinculación temprana y la vinculación tardía en la automatización

Algunas funciones de la API son métodos del objeto del complemento de think-cell en PowerPoint, y algunas del objeto del complemento de think-cell en Excel. Utilizaremos tcPpAddIn para las referencias al complemento de PowerPoint, y tcXlAddIn para las referencias al complemento de Excel.

F.1.1 Visual Basic para Aplicaciones

Para escribir macros mediante Visual Basic para Aplicaciones (VBA), se utiliza el entorno de desarrollo integrado en la aplicación host de Office. Se puede acceder pulsando Alt+F11. La definición de una macro suele estar contenida en un módulo, que puede añadir mediante InsertarMódulo. Puede ver todas las macros definidas para un determinado documento pulsando Alt+F8.

Para indicar que las llamadas a métodos del complemento think-cell son de vinculación tardía, debe declarar la variable que contiene la referencia a ella como Object:

Dim tcaddin As Object 
Set tcaddin = Application.COMAddIns("thinkcell.addin").Object

De manera predeterminada, siempre se hace referencia a la biblioteca de tipos de la aplicación host de Office. Si necesita acceder al modelo de objetos de otra aplicación de Office, deberá añadir su biblioteca de tipos como referencia.

Por ejemplo, si desea utilizar una macro en PowerPoint para manipular datos en una hoja de Excel antes de actualizar un gráfico de think-cell a partir de ella, deberá añadir manualmente la Biblioteca de objetos de Microsoft Excel 16.0 a través del cuadro de diálogo HerramientasReferencias en el entorno de desarrollo de VBA.

Nota: 16.0 es el número de versión de Office 2016 y posteriores. Para Office 2010 o 2013, debe utilizar las bibliotecas de objetos 14.0 o 15.0, respectivamente. Si tiene varias versiones de Office instaladas, el cuadro de diálogo Referencias solo mostrará las bibliotecas de la versión más reciente instalada. En lo que sigue supondremos que utiliza Office 2016 o posterior.

Utilizando Application.COMAddIns("thinkcell.addin").Object siempre obtendrá el objeto de complemento de think-cell de la aplicación host de Office actual, es decir, tcPpAddIn o tcXlAddIn, dependiendo de si lo utiliza en PowerPoint o Excel. Para adquirir una referencia al objeto del complemento en la otra aplicación de Office y acceder a las funciones de la API que expone, adquiéralo a través de una instancia de aplicación adecuada.

Por ejemplo, para adquirir una referencia a tcXlAddIn desde PowerPoint:

Dim xlapp As Object
Set xlapp = New Excel.Application

Dim tcXlAddIn As Object
Set tcXlAddIn = xlapp.COMAddIns("thinkcell.addin").Object

Tenga en cuenta que esto requiere añadir una biblioteca de objetos de Excel como una referencia.

Recomendamos utilizar la instrucción Option Explicit, que fuerza la declaración explícita de todas las variables, ayudando así a evitar errores comunes de programación y mejorando las sugerencias proporcionadas por IntelliSense. Puede hacer que se añada automáticamente a todos los módulos activando HerramientasOpcionesConfiguración de códigosRequerir declaración de variables. Se incluye en todos nuestros ejemplos de código.

F.1.2 C#

Puede utilizar la API de think-cell desde C# al desarrollar complementos y extensiones de código de documentos que se ejecuten dentro de una aplicación host de Office, así como al desarrollar aplicaciones independientes.

En lo que sigue supondremos que utiliza Visual Studio 2017 o posterior para desarrollar soluciones de Office en C#. Consulte la siguiente sección para obtener instrucciones de configuración más específicas para el desarrollo de complementos. Con cada uno de nuestros ejemplos de código, indicaremos qué plantilla de proyecto de Visual Studio utilizar.

Para que las llamadas a métodos del objeto del complemento de think-cell sean de vinculación tardía, declare la variable que contiene la referencia al objeto del complemento de think-cell como dynamic; este es también el tipo inferido por el compilador al declarar la referencia como var, de modo que pueda escribir simplemente:

var tcPpAddIn = ppapp.COMAddIns.Item("thinkcell.addin").Object;

Aquí ppapp es una referencia a un objeto Application de PowerPoint en el que se ha cargado think-cell.

Para acceder al modelo de objetos de una aplicación de Office, debe añadir su biblioteca de tipos o su ensamblaje de interoperabilidad primaria (primary interop assembly, PIA) como referencia a su proyecto. Recomendamos añadir la biblioteca de tipos si es posible, ya que Visual Studio añadirá automáticamente una referencia al PIA correspondiente, si hay alguno disponible, o generará un ensamblado de interoperabilidad a partir de la biblioteca de tipos si no hay ninguno (ver aquí).

Por ejemplo, para poder obtener la referencia al objeto del complemento de think-cell como arriba, debería añadir la biblioteca de objetos de Microsoft PowerPoint 16.0 que se encuentra en la pestaña Bibliotecas de tipo COM → del cuadro de diálogo Gestor de referencias. Dependiendo del tipo de proyecto, para acceder a este cuadro de diálogo debe hacer clic con el botón derecho en Referencias o en Dependencias en el Explorador de soluciones y seleccionar Agregar referencia (COM).

Nota: 16.0 es el número de versión de Office 2016 y posteriores. Al usar la opción Incrustar tipos de interoperabilidad, que está habilitada de forma predeterminada para una referencia a una biblioteca de tipo COM, una aplicación compilada con esta referencia será compatible con versiones previas (y posteriores) de Office, siempre que todas las interfaces utilizadas existan en su mismo modelo de objeto. Consulte aquí para obtener más información.

Las funciones API de think-cell indican errores utilizando COM HRESULTs. Algunas de ellas se asignan automáticamente a las correspondientes clases de excepción .NET, véase Cómo: asignar HRESULTs y excepciones .

F.1.2.1 Desarrollo de complementos

Para desarrollar complementos para Office o extensiones de código para documentos de Office, se utilizan las plantillas de proyecto Complemento de VSTO para PowerPoint/Excel y Plantilla/Libro de VSTO para Excel. Son parte de las Herramientas de desarrollador de Office para Visual Studio, que se instalan como parte de la configuración predeterminada. Si estas herramientas y plantillas no están disponibles en su instalación de Visual Studio, puede añadirlas, por ejemplo, yendo a ConfiguraciónAplicacionesVisual Studio 2022ModificarOtros conjuntos de herramientas, marcando Desarrollo de Office/SharePoint y haciendo clic en Modificar. Consulte también la documentación de Microsoft aquí y aquí.

De forma predeterminada, siempre se carga el PIA para la aplicación host de Office de la plantilla seleccionada. Si necesita acceder al modelo de objetos de otra aplicación de Office, deberá añadir su tipo de biblioteca como referencia, tal como se explicaba previamente.

Nota: la API de think-cell no se puede usar desde los complementos Web de Office, por desgracia ahora denominados simplemente “Complementos de Office” por Microsoft, ya que no pueden interactuar con el modelo de objetos de la aplicación de Office directamente, y, en particular, no puede interactuar con complementos COM como think-cell.

F.2 Referencia de API

F.2.1
Actualización de elementos y plantillas de presentación con datos de Excel
F.2.2
Control de estilos
F.2.3
Importación de gráficos de Mekko Graphics
F.2.4
Varios

F.2.1 Actualización de elementos y plantillas de presentación con datos de Excel

Las funciones de esta sección se pueden utilizar para actualizar mediante programación elementos de think-cell, normalmente marcadores de posición en una plantilla de presentación, con datos de Excel. UpdateChart actualiza elementos de think-cell, especificados por un nombre que se le asigna en la plantilla, con datos de un rango de Excel pasado como argumento. Consulte también 24. Introducción a la automatización para ver cómo preparar la plantilla.

PresentationFromTemplate instancia una plantilla de presentación con datos de un libro de Excel vinculado. Consulte también 21. Enlaces de datos de Excel para saber cómo crear vínculos de Excel.

Las funciones de esta sección son métodos del complemento de think-cell en Excel.

F.2.1.1 Actualizar gráfico

F.2.1.1.1 Firma
VBA
tcXlAddIn.UpdateChart( _ 
    target As Object, _ 
    strName As String, _ 
    rgData As Excel.Range, _ 
    bTransposed As Boolean _ 
)
C#
void tcXlAddIn.UpdateChart(
    object target,
    string strName,
    Excel.Range rgData,
    bool bTransposed
);
F.2.1.1.2 Descripción

Esta función actualiza todos los elementos en target llamados strName con los datos contenidos en rgData. Para que los datos se interpreten correctamente en los gráficos, el intervalo rgData debe ajustarse a su diseño predeterminado en la hoja de datos, o a su versión transpuesta, consulte también Creación de un gráfico con Excel y Ajuste del diseño de datos. Si se va a utilizar la versión predeterminada o la transpuesta se indica ajustando bTransposed en false o true, respectivamente. Para elementos distintos de gráficos, como, por ejemplo, tablas, se ignora el valor de bTransposed.

target debe ser una Presentation o SlideRange, o un única Slide, Master o CustomLayout.

El nombre strName se comprueba sin distinguir entre mayúsculas y minúsculas. Debe haberse asignado previamente en PowerPoint utilizando el control de propiedad Nombre de UpdateChart como se describe en 24. Introducción a la automatización.

Para asegurarse de que se seleccionan los elementos correctos, asegúrese de que son los únicos que tienen su Nombre de UpdateChart establecido en strName en el objeto pasado como pres.

Si el elemento objetivo está vinculado a un intervalo de datos de Excel, el vínculo se rompe al invocar esta función. Posteriormente, el elemento no quedará vinculado a ningún intervalo de Excel.

F.2.1.1.3 Ejemplos

Para utilizar estas muestras, prepare una presentación como se describe en 24. Introducción a la automatización, y guárdela como C:\Samples\UpdateChart\template.pptx.

VBA

Para usar este ejemplo, añádalo a un módulo en un libro de Excel.

Requiere una referencia a la biblioteca de objetos de Microsoft PowerPoint 16.0 (consulte Visual Basic para Aplicaciones para ver más detalles).

Ejecutar UpdateChart_Sample en un libro actualizará el gráfico en la plantilla de la presentación con los datos contenidos en el intervalo A1:D5 de su primera hoja.

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
C#

Para usar esta plantilla, sustituya el código en Program.cs de la plantilla del proyecto C# aplicación de consola por este.

Requiere referencias a la biblioteca de objetos de Microsoft PowerPoint 16.0, a la biblioteca de objetos de Microsoft Excel 16.0 y a la biblioteca de objetos de Microsoft Office 16.0 (consulte C# para ver más detalles).

Ejecutar la aplicación resultante actualizará el gráfico de la plantilla de presentación para que contenga una única serie llamada “Serie 1” con los valores 1, 2, 3, y guardará el resultado como 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();
        }
    }
}

F.2.1.2 Presentación desde plantilla

F.2.1.2.1 Firma
VBA
tcXlAddIn.PresentationFromTemplate( _ 
    wb As Excel.Workbook, _ 
    strTemplate As String, _ 
    ppapp As PowerPoint.Application _ 
) As PowerPoint.Presentation
C#
PowerPoint.Presentation tcXlAddIn.PresentationFromTemplate(
    Excel.Workbook wb,
    string strTemplate,
    PowerPoint.Application ppapp
);
F.2.1.2.2 Descripción

Esta función utiliza los vínculos de datos entre el libro de Excel wb y la plantilla con nombre de archivo strTemplate para instanciar dicha plantilla actualizando los elementos vinculados con los datos de los rangos a los que están vinculados. El resultado es una nueva presentación dentro de la instancia de PowerPoint ppapp.

strTemplate puede ser una ruta de acceso completa o relativa, que se toma respecto a la ubicación del archivo del libro de Excel wb.

Todos los elementos de strTemplate que están vinculados al libro de Excel wb están actualizados (independientemente de que tengan actualización automática o no). En la presentación resultante, sus vínculos de datos se rompen para evitar que se produzcan más cambios en estos elementos.

Los elementos de strTemplate que están vinculados a libros Excel diferentes de wb no sufren cambios y continúan vinculados, de manera que es posible actualizar los vínculos a partir de varios libros de Excel guardando el resultado de esta función como plantilla nueva y, a continuación, llamando de nuevo esta función con el libro siguiente.

Si quiere controlar los colores de segmentos del gráfico o el formato de las celdas de la tabla con el vínculo de Excel, puede establecer la combinación de colores en las opciones Usar relleno de hoja de datos en parte superior (consulte Combinación de colores) o Usar hoja de datos... (consulte Formato de una tabla), respectivamente. De igual forma, para controlar el formato de número con el vínculo de Excel, defínalo como Usar formato de Excel (consulte Formato de número).

Asegúrese de definir las opciones de formato relevantes y el formato de número de las celdas correspondientes en Excel antes de llamar a PresentationFromTemplate.

F.2.1.2.3 Ejemplos

Para utilizar estos ejemplos, cree primero una presentación que contenga un gráfico apilado vinculado al intervalo de la primera hoja de un libro de Excel, como se explica en G1:K4. Guarde la presentación resultante como C:\Samples\PresentationFromTemplate\template.pptx y el libro de trabajo como data.xlsx en el mismo directorio.

VBA

Para utilizar este ejemplo, añádalo a un módulo del libro de Excel data.xlsx preparado como se ha explicado anteriormente.

Requiere una referencia a la biblioteca de objetos de Microsoft PowerPoint 16.0 (consulte Visual Basic para Aplicaciones para ver más detalles).

Ejecutar PresentationFromTemplate_Sample cambiará el valor de la celda Sheet1!H3, que está vinculado al primer valor de la primera serie del gráfico contenido en template.pptx, de i=1 a 10, creará una nueva presentación con el gráfico de la plantilla actualizado para contener ese valor, y que ya no está vinculado al libro, y la guardará como output_i.pptx en el mismo directorio que la plantilla.

Option Explicit

Sub 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:\Samples\PresentationFromTemplate\output_" & 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
    Next
End Sub
C#

Para usar esta plantilla, sustituya el código en Program.cs de la plantilla del proyecto C# aplicación de consola por este.

Requiere referencias a la biblioteca de objetos de Microsoft PowerPoint 16.0, a la biblioteca de objetos de Microsoft Excel 16.0 y a la biblioteca de objetos de Microsoft Office 16.0 (consulte C# para ver más detalles).

Ejecutar la aplicación resultante abrirá visiblemente Excel, cargará el libro data.xlsx, cambiará el valor de la celda H3, que está vinculado al primer valor de la primera serie del gráfico contenido en template.pptx, de i=1 a 10, creará una nueva presentación con el gráfico de la plantilla actualizado para contener ese valor, y que ya no está vinculado al libro, y la guardará como output_i.pptx en el mismo directorio que la plantilla.

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();
        }
    }
}

F.2.2 Control de estilos

Las funciones de esta sección pueden utilizarse para cargar, inspeccionar y eliminar mediante programación los estilos de think-cell. LoadStyle carga un estilo de un archivo de estilos en una diapositiva maestra o en un único diseño personalizado. LoadStyleForRegion carga un estilo de un archivo de estilos en una región específica de un diseño personalizado. GetStyleName devuelve el nombre del estilo cargado en un diseño maestro o personalizado. RemoveStyles elimina todos los estilos de un diseño personalizado.

Consulte Creación de un estilo de think-cell y D. Formato de archivos de estilos para obtener más información sobre crear y editar estilos. Consulte Carga de archivos de estilos para ver más información sobre cómo cargarlos

Las funciones de esta sección son métodos del complemento de think-cell en PowerPoint.

F.2.2.1 Cargar estilo

F.2.2.1.1 Firma
VBA
tcPpAddIn.LoadStyle( _ 
    CustomLayoutOrMaster As Object, _ 
    FileName As String 
)
C#
void tcPpAddIn.LoadStyle(
    object CustomLayoutOrMaster,
    string FileName
);
F.2.2.1.2 Descripción

Esta función carga el estilo contenido en el archivo de estilos que hay en FileName en un diseño del patrón o un diseño personalizado, el cual a su vez se especifica mediante el parámetro CustomLayoutOrMaster

CustomLayoutOrMaster debe ser un CustomLayout o Master.

Cuando se aplica a un diseño personalizado en el que se ha establecido un estilo regional (consulte Cargar estilo para región), se eliminará el estilo regional. Esto significa que debe cargar el estilo que debería aplicarse en el resto de la diapositiva usando esta función antes de cargar un estilo restringido a una región.

Cuando se aplica a un diseño maestro, se eliminarán todos los estilos cargados en los diseños personalizados contenidos en ese diseño maestro, regionales y sin restricciones. Esto significa que debe cargar el estilo que debe aplicarse a los diseños personalizados sin un estilo específico en el diseño maestro antes de cargar un estilo que se aplique a un diseño personalizado específico utilizando esta función.

F.2.2.1.3 Ejemplos
VBA

Para utilizar esta muestra, añada el siguiente código a un módulo de PowerPoint (consulte Visual Basic para Aplicaciones para ver los detalles).

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:\some\path\styles\style.xml"

    Call tcPpAddIn.LoadStyle(master, style)
End Sub

F.2.2.2 Cargar estilo para región

F.2.2.2.1 Firma
VBA
tcPpAddIn.LoadStyleForRegion( _ 
    CustomLayout As PowerPoint.CustomLayout, _ 
    FileName As String, _
    Left as Single, _
    Top as Single, _
    Width as Single, _
    Height as Single _
)
C#
void tcPpAddIn.LoadStyleForRegion(
    PowerPoint.CustomLayout CustomLayout,
    string FileName,
    float Left,
    float Top,
    float Width,
    float Height
);
F.2.2.2.2 Descripción

Esta función carga el archivo de estilos que hay en FileName en el diseño personalizado CustomLayout y lo restringe a un área determinada por Left, Top, Width y Height. En el resto de la diapositiva, se aplica el estilo cargado en el estilo maestro, o el cargado previamente en el estilo personalizado con LoadStyle.

Los parámetros Left, Top, Width y Height se dan en puntos de PowerPoint. Left y Top especifican la distancia de los bordes izquierdo y superior de la región desde los bordes izquierdo y superior del diseño personalizado, respectivamente. y, normalmente, se establecen como fracciones de la altura y la anchura totales de la diapositiva. Por ejemplo, para una región que cubra los dos tercios derechos de la presentación personalizada, debería establecer

Left = CustomLayout.Width / 3
Top = 0
Width = CustomLayout.Width * 2 / 3
Height = CustomLayout.Height

También se puede añadir manualmente una forma a una diapositiva o a un diseño personalizado, consultar sus propiedades Left, Top, Width y Height mediante programación y utilizar los valores con LoadStyleForRegion, para restringir el estilo a la misma área que abarca la forma.

El software think-cell admite un máximo de dos estilos por diseño personalizado. Uno se establece con LoadStyle y abarca todo lo que no quede restringido a un área; el otro se establece con LoadStyleForRegion.

F.2.2.2.3 Ejemplos
VBA

Para utilizar esta muestra, añada el siguiente código a un módulo de PowerPoint (consulte Visual Basic para Aplicaciones para ver los detalles).

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:\some\path\styles\style.xml"

    Call tcPpAddIn.LoadStyleForRegion(layout, style, left, top, width, height)
End Sub

F.2.2.3 Obtener nombre de estilo

Compatible con think-cell 13 y posterior.

F.2.2.3.1 Firma
VBA
tcPpAddIn.GetStyleName( _ 
    CustomLayoutOrMaster As Object _ 
) As String
C#
string tcPpAddIn.GetStyleName(
    object CustomLayoutOrMaster
);
F.2.2.3.2 Descripción

Esta función devuelve el nombre del estilo cargado en CustomLayout o Master CustomLayoutOrMaster. Este es el mismo nombre que está especificado en el atributo name del elemento <style> del archivo de estilo correspondiente (consulte style).

Devuelve una cadena vacía cuando no hay ningún estilo cargado en CustomLayoutOrMaster. Tenga en cuenta que un maestro siempre tiene un estilo cargado cuando think-cell está activo y que el nombre de un estilo no puede estar vacío.

Si se devuelve a un nombre para un CustomLayout, es el nombre del estilo que tiene cargado con Cargar estilo, no el que cargado con Cargar estilo para región, si lo hubiera.

F.2.2.3.3 Ejemplos
VBA

Para utilizar esta muestra, añada el siguiente código a un módulo de PowerPoint (consulte Visual Basic para Aplicaciones para ver los detalles).

Option Explicit

Sub 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 name
End Sub

F.2.2.4 Quitar estilos

F.2.2.4.1 Firma
VBA
tcPpAddIn.RemoveStyles( _ 
    CustomLayout As PowerPoint.CustomLayout _ 
)
C#
void tcPpAddIn.RemoveStyles(
    PowerPoint.CustomLayout CustomLayout
);
F.2.2.4.2 Descripción

Esta función elimina todos los estilos del diseño personalizado CustomLayout y, a continuación, se aplica el estilo cargado en el diseño del patrón. Es posible que haya un estilo cargado en el diseño personalizado y otro estilo restringido a un área específica de dicho diseño. Dado que RemoveStyles elimina todos los estilos, ambos se eliminan. El estilo cargado en un diseño del patrón no se puede eliminar, ya que debe haber en todo momento un estilo válido asociado a un diseño del patrón. Se puede sobrescribir con otro archivo de estilos.

F.2.2.4.3 Ejemplos
VBA

Para utilizar esta muestra, añada el siguiente código a un módulo de PowerPoint (consulte Visual Basic para Aplicaciones para ver los detalles).

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

F.2.3 Importación de gráficos de Mekko Graphics

Las funciones de esta sección se pueden utilizar para importar e inspeccionar mediante programación gráficos creados con Mekko Graphics a think-cell. ImportMekkoGraphicsCharts sustituye los gráficos de Mekko Graphics por gráficos equivalentes de think-cell. GetMekkoGraphicsXML extrae la definición XML de un gráfico de Mekko Graphics.

Las funciones de esta sección son métodos del complemento de think-cell en PowerPoint.

F.2.3.1 Importar gráficos de Mekko Graphics

Compatible con think-cell 13 y posterior.

F.2.3.1.1 Firma
VBA
tcPpAddIn.ImportMekkoGraphicsCharts ( _
    ashp As PowerPoint.Shape() _
) As PowerPoint.Slide
C#
PowerPoint.Slide tcPpAddIn.ImportMekkoGraphicsCharts(
    PowerPoint.Shape[] ashp
);
F.2.3.1.2 Descripción

Esta función sustituye todos los gráficos de Mekko Graphics de la matriz de Shape que le ha pasado con un gráfico think-cell equivalente. Todas las formas deben estar en la misma diapositiva. Antes de modificar la diapositiva, la función hará una copia de la diapositiva sin modificar y la insertará directamente después de la versión modificada.

La función devuelve una referencia para esta copia, si se hizo una.

Devuelve Nothing/null, si la presentación no se modificó, por ejemplo porque la matriz no contenía ningún gráfico de Mekko Graphics.

F.2.3.1.3 Ejemplos
VBA

Para utilizar este ejemplo, añada el siguiente código a un módulo de PowerPoint (consulte Visual Basic para Aplicaciones para ver los detalles).

Ejecutar ImportAll en una presentación, recorrerá las diapositivas de la presentación y sustituirá todos los gráficos visibles de Mekko Graphics por gráficos equivalentes de think-cell, haciendo una copia de cada diapositiva que contenga uno antes de modificarla.

Option Explicit

Sub 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 Slide
End Sub
C#

Para utilizar este ejemplo, añada este método a la clase ThisAddIn de la plantilla de proyecto C# complemento VSTO de PowerPoint (consulte C# y Desarrollo de complementos para obtener más detalles).

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()
            );
        }
    }

Añada la siguiente línea al método ThisAddIn_Startup para que se ejecute ImportAll en cada presentación que se abra:

Application.PresentationOpen += new PowerPoint.EApplication_PresentationOpenEventHandler(ImportAll);

F.2.3.2 Obtener XML de Mekko Graphics

Compatible con think-cell 13 y posterior.

F.2.3.2.1 Firma
VBA
tcPpAddIn.GetMekkoGraphicsXML ( _
    shp As PowerPoint.Shape _
) As String
C#
string tcPpAddIn.GetMekkoGraphicsXML(
    PowerPoint.Shape shp
);
F.2.3.2.2 Descripción

Esta función devuelve el XML de los gráficos de Mekko Graphics en shp como una cadena. Esto no modifica la forma que se le pasa.

Si shp no es un gráfico de Mekko Graphics, se produce un error de E_INVALIDARG (0x80070057).

F.2.3.2.3 Ejemplos
VBA

Para utilizar esta muestra, añada el siguiente código a un módulo de PowerPoint (consulte Visual Basic para Aplicaciones para ver los detalles).

Option Explicit

Sub 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 slide
End Sub
C#

Para usar esta muestra, sustituya el código en Program.cs de una aplicación de consola por este.

Requiere referencias a la biblioteca de objetos de Microsoft PowerPoint 16.0 y a la biblioteca de objetos de Microsoft Office 16.0 (consulte C# para ver más detalles).

La ejecución de la aplicación recorrerá la presentación en C:\Samples\GetMekkoGraphicsXML\presentation.pptx e imprimirá en la consola el XML de los gráficos de Mekko Graphics contenidos en ella.

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();
        }
    }
}

F.2.4 Varios

Las funciones de esta sección son métodos del complemento de think-cell en PowerPoint.

F.2.4.1 Iniciar inserción de tabla

Compatible con think-cell 13 y posterior.

F.2.4.1.1 Firma
VBA
tcPpAddIn.StartTableInsertion()
C#
void tcPpAddIn.StartTableInsertion();
F.2.4.1.2 Descripción

Llamar a este método tiene el mismo efecto que hacer clic en Tabla en el menú Elementos de PowerPoint.

Compartir