F. Documentação da API

think-cell permite que você controle pragmaticamente algumas funcionalidades por meio de uma API. Aqui você pode encontrar uma visão geral de todas as funções de API disponíveis, e instruções gerais sobre como configurar seu ambiente de desenvolvimento para escrever macros, suplementos ou programas autônomos que os acessem.

F.1
Introdução
F.2
Referência de API

F.1 Introdução

A API da think-cell é integrada ao modelo de Automação do Office, portanto pode ser acessada a partir de qualquer linguagem com o qual seja possível programar o Office, como Visual Basic for Applications (VBA) ou C#.

O ponto de entrada no think-cell é o objeto de suplemento do think-cell. Pode ser acessado através da coleção Application.COMAddIns. As chamadas ao think-cell sempre são ligadas tardiamente, portanto não há biblioteca de tipos nem referências a serem adicionadas. Consulte a base de dados de conhecimento da Microsoft para obter uma explicação:

Usando ligação precoce e tardia na automação

Algumas funções de API são métodos do objeto do suplemento do think-cell no PowerPoint, e outras, do objeto do suplemento do think-cell no Excel. Usaremos tcPpAddIn para fazer referência ao suplemento do PowerPoint, e tcXlAddIn para fazer referência ao suplemento do Excel.

F.1.1 Visual Basic for Applications

Para escrever macros usando Visual Basic for Applications (VBA), usamos o ambiente de desenvolvimento integrado ao aplicativo host do Office. Ele pode ser acessado pressionando Alt+F11. A definição de macro está geralmente contida em um módulo, que você pode adicionar em InserirMódulo. Você pode visualizar todos os macros definidos para um determinado documento pressionando Alt+F8.

Para indicar que as chamadas de método no suplemento do think-cell são ligadas tardiamente, você precisa declarar a variável fazendo referência a isso como Object:

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

A biblioteca de tipos para o aplicativo host do Office é sempre referenciada por padrão. Caso precise acessar o modelo do objeto de outro aplicativo do Office, você deve adicionar sua biblioteca de tipos como uma referência.

Por exemplo, se você quiser usar um macro no PowerPoint para manipular dados em uma planilha do Excel antes de atualizar um gráfico do think-cell, você deve adicionar manualmente a biblioteca de objetos do Microsoft Excel 16.0 através do diálogo FerramentasReferências no ambiente de desenvolvimento de VBA.

Observação: 16.0 é o número da versão do Office 2016 e posterior. Para o Office 2010 ou 2013, você deve usar as bibliotecas de objetos 14.0 ou 15.0, respectivamente. Se você tiver várias versões do Office instaladas, o diálogo Referências mostrará apenas as bibliotecas de objetos da última versão instalada. Presumiremos a seguir que você esteja usando o Office 2016 ou posterior.

Usar Application.COMAddIns("thinkcell.addin").Object sempre levará ao objeto do suplemento do think-cell do aplicativo host do Office, ou seja, tcPpAddIn ou tcXlAddIn, dependendo de se for usado no PowerPoint ou Excel. Para adquirir uma referência ao objeto do suplemento no outro aplicativo do Office, e acesso às funções de API que ele expõe, ela deve ser adquirida através de uma instância adequada do aplicativo.

Por exemplo, para adquirir uma referência para tcXlAddIn do PowerPoint:

Dim xlapp As Object
Set xlapp = New Excel.Application

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

Observe que isso exige que a biblioteca de objetos do Excel seja adicionada como uma referência.

Recomendamos usar a declaração Option Explicit, que força a declaração explícita de todas as variáveis, dessa forma ajudando a evitar erros de programação comuns e melhorar as sugestões fornecidas pelo IntelliSense. Você pode adicioná-la automaticamente a todos os módulos, ativando FerramentasOpçõesConfigurações de códigoDeclaração variável obrigatória. Ela está incluída em todas as nossas amostras de código.

F.1.2 C#

Você pode usar a API do think-cell a partir da C# ao desenvolver suplementos e extensões de código de documento executados dentro de um aplicativo host do Office, e ao desenvolver aplicativos autônomos.

Presumiremos a seguir que você está usando o Visual Studio 2017 ou posterior para desenvolver soluções do Office na C#. Consulte a próxima seção para obter instruções de configuração mais específicas para o desenvolvimento de suplemento. Com cada uma de nossas amostras de código, indicaremos qual modelo de projeto do Visual Studio você deve usar.

Para fazer chamadas de método à ligação tardia do objeto do suplemento do think-cell, declare a variável que contém a referência ao objeto do suplemento do think-cell como dynamic; esse também é o tipo inferido pelo compilador ao declarar a referência como var, então você pode simplesmente escrever:

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

Aqui, ppapp é uma referência a um objeto do PowerPoint Application no qual o think-cell foi carregado.

Para acessar o modelo de objeto de um aplicativo do Office, você precisa adicionar a respectiva biblioteca de tipos ou assembly de interoperabilidade principal (PIA) como uma referência ao seu projeto. Recomendamos adicionar a biblioteca de tipos se possível, pois o Visual Studio vai adicionar automaticamente uma referência à PIA correspondente, se disponível, ou gerar uma assembly de interoperabilidade da biblioteca de tipos se não houver nenhuma (consulte aqui).

Por exemplo, para conseguir obter a referência ao objeto do suplemento do think-cell conforme indicado acima, você poderia adicionar a biblioteca do objeto do Microsoft PowerPoint 16.0 encontrada na guia COMBibliotecas de tipos do diálogo Gerente de referência. Dependendo do seu tipo de projeto, este diálogo é acessado clicando com o botão direito em Referências ou Dependências no Solution Explorer e selecionando Adicionar (COM) referência.

Observação: 16.0 é o número da versão do Office 2016 e posterior. Ao usar a opção Incorporar tipos de interoperabilidade, que é habilitado por padrão para uma referência a uma biblioteca de tipos COM, uma aplicação compilada com esta referência será compatível inversamente (e progressivamente) com outras versões do Office desde que todas as interfaces usadas existam no seu modelo de objeto. Consulte aqui para mais informações.

As funções de API do think-cell indicam erros usando HRESULTs COM. Algumas delas são mapeadas automaticamente nas classes de exceção .NET correspondentes; consulte Como: mapear HRESULTs e Exceções .

F.1.2.1 Desenvolvimento de suplemento

Para desenvolver suplementos para Office, ou extensões de código para documentos do Office, usamos modelos de projeto PowerPoint/suplemento da VSTO do Excel e Modelo/Pasta de trabalho da VSTO do Excel. Essas são uma parte das Ferramentas do Visual Studio para Office, instaladas como parte da configuração padrão. Se essas ferramentas e modelos não estiverem disponíveis na instalação do seu Visual Studio, você pode adicioná-las, por exemplo, indo em ConfiguraçõesAplicativosVisual Studio 2022ModificarOutros conjuntos de ferramenta, selecionando desenvolvimento do Office/SharePoint e clicando em Modificar. Consulte também a documentação da Microsoft aqui e aqui.

O PIA para o aplicativo host do Office do modelo selecionado é sempre carregado por padrão. Caso precise acessar o modelo do objeto de outro aplicativo do Office, você deve adicionar sua biblioteca de tipos como uma referência, conforme explicado acima.

Observação: a API do think-cell não pode ser usada nos suplementos do Office Web — infelizmente, agora simplesmente chamado de “suplementos do Office” pela Microsoft — pois não podem interagir, diretamente, com o modelo do objeto do aplicativo do Office, e não podem interagir, particularmente, com suplementos COM como o think-cell.

F.2 Referência de API

F.2.1
Atualizar elementos e modelos de apresentação com dados do Excel
F.2.2
Controlar estilos
F.2.3
Importar gráficos Mekko Graphics
F.2.4
Variado

F.2.1 Atualizar elementos e modelos de apresentação com dados do Excel

As funções nesta seção podem ser usadas para atualizar programaticamente os elementos do think-cell, geralmente espaços reservados em um modelo de apresentação, com dados do Excel. UpdateChart atualiza elementos do think-cell, especificados por um nome atribuído a eles no modelo, com dados de um intervalo do Excel passados como um argumento. Consulte também 24. Introdução à automação para saber como preparar o modelo.

PresentationFromTemplate exemplifica um modelo de apresentação com dados de uma pasta de trabalho vinculada ao Excel. Consulte também 21. Links de dados do Excel para saber como criar links do Excel.

As funções nesta seção são métodos do suplemento do think-cell no Excel.

F.2.1.1 Atualizar gráfico

F.2.1.1.1 Assinatura
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 Descrição

Esta função atualiza todos os elementos no target com nome strName com os dados contidos no rgData. Para que os dados sejam interpretados corretamente para gráficos, o intervalo rgData deve estar alinhado ao seu layout da planilha de dados padrão, ou sua versão transposta; consulte também Criar gráfico a partir do Excel e Ajustando o layout de dados. A informação sobre se deve ser usada a versão padrão ou transposta é indicada pela configuração bTransposed para false ou true, respectivamente. Para elementos que não são gráficos, tabelas por exemplo, o valor de bTransposed é ignorado.

target deve ser Presentation ou SlideRange, ou um único Slide, Master ou CustomLayout.

O nome strName não diferencia maiúsculas e minúsculas. Isso deve ter sido atribuído anteriormente no PowerPoint usando o controle de propriedade Nome de UpdateChart como descrito em 24. Introdução à automação.

Para garantir que os elementos corretos sejam direcionados, certifique-se de que eles sejam os únicos com seu Nome de UpdateChart configurado para strName no objeto passado como pres.

Se um elemento direcionado estiver vinculado a algum intervalo de dados do Excel, ao invocar essa função, o vínculo será quebrado. Depois, o elemento não será vinculado a qualquer intervalo do Excel.

F.2.1.1.3 Exemplos

Para usar esses exemplos, prepare uma apresentação conforme descrito no 24. Introdução à automação, e a salve como C:\Samples\UpdateChart\template.pptx.

VBA

Para usar esta amostra adicione-a a um módulo e, uma pasta de trabalho do Excel.

Ela requer uma referência à biblioteca de objetos do Microsoft PowerPoint 16.0 (consulte Visual Basic for Applications para obter mais detalhes).

Ao executar UpdateChart_Sample em uma pasta de trabalho, o gráfico no modelo de apresentação será atualizado com os dados contidos no intervalo A1:D5 da sua primeira planilha.

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 amostra, insira-a no lugar do código no Program.cs do modelo de projeto do aplicativo Console da C#.

São necessárias referências à biblioteca de objetos do Microsoft PowerPoint 16.0, biblioteca de objetos do Microsoft Excel 16.0 e biblioteca de objetos do Microsoft Office 16.0 (consulte C# para obter mais detalhes).

Ao executar o aplicativo resultante, o gráfico será atualizado no modelo de apresentação e exibirá uma única série chamada "Série 1", com valores 1, 2, 3, e o resultado será salvo 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 Apresentação a partir do modelo

F.2.1.2.1 Assinatura
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 Descrição

Esta função usa os vínculos de dados entre a pasta de trabalho do Excel wb e o modelo com nome de arquivo strTemplate para instanciar o modelo atualizando os elementos vinculados com os dados dos intervalos ao quais estão vinculados. O resultado é uma nova apresentação dentro da instância do PowerPoint ppapp.

strTemplate pode ser um caminho inteiro ou relativo, que é então tomado para ser relativo à localização do arquivo da pasta de trabalho do Excel wb.

Todos os elementos em strTemplate que estão vinculados à pasta de trabalho wb do Excel são atualizados (independentemente se estão definidos para atualização automática ou não). Na apresentação resultante, os vínculos de dados estão corrompidos para impedir que esses elementos sejam alterados no futuro.

Os elementos em strTemplate, que são vinculados a pastas de trabalho do Excel que não wb, são deixados sem modificação e ainda vinculados, para ser possível atualizar vínculos de várias pastas de trabalho do Excel, salvando o resultado dessa função como novo modelo e chamando novamente essa função com a próxima pasta de trabalho.

Se você deseja controlar as cores dos segmentos do gráfico ou a formatação das células da tabela com o link do Excel, você pode configurar o esquema de cores para Usar preenchimento da planilha de dados como preferência (consulte Esquema de cores) ou as opções de Usar preenchimento da planilha de dados... (consulte Formatar uma tabela), respectivamente. Da mesma forma, para controlar o formato de número com o link do Excel, configure-o como Usar formatação do Excel (veja Formato de número).

Certifique-se de definir as opções de formatação relevantes e o formato de número das células respectivas no Excel antes de chamar PresentationFromTemplate.

F.2.1.2.3 Exemplos

Para usar essas amostras, primeiro crie uma apresentação contendo um gráfico empilhado vinculado ao intervalo G1:K4 da primeira planilha em uma pasta de trabalho do Excel, conforme explicado em Criar gráfico a partir do Excel. Salve a apresentação resultante como C:\Samples\PresentationFromTemplate\template.pptx, e a pasta de trabalho como data.xlsx, no mesmo diretório.

VBA

Para usar esta amostra, adicione-a ao módulo na pasta de trabalho data.xlsx do Excel, preparada conforme explicado acima.

Ela requer uma referência à biblioteca de objetos do Microsoft PowerPoint 16.0 (consulte Visual Basic for Applications para obter mais detalhes).

Ao executar PresentationFromTemplate_Sample, o valor na célula Sheet1!H3, que está vinculado ao primeiro valor da primeira série de planilhas contidas em template.pptx, de i=1 a 10, será alterado, será criada uma nova apresentação com o gráfico no modelo atualizado, que passará a exibir esse valor, e que não está vinculado à pasta de trabalho, e será salvo como output_i.pptx no mesmo diretório que do modelo.

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 amostra, insira-a no lugar do código no Program.cs do modelo de projeto do aplicativo Console da C#.

São necessárias referências à biblioteca de objetos do Microsoft PowerPoint 16.0, biblioteca de objetos do Microsoft Excel 16.0 e biblioteca de objetos do Microsoft Office 16.0 (consulte C# para obter mais detalhes).

Ao executar o aplicativo resultante, o Excel abrirá e ficará visível, a pasta de trabalho data.xlsx será carregada, o valor na célula H3, que está vinculado ao primeiro valor da primeira série de planilhas contidas em template.pptx, de i=1 a 10, será alterado, será criada uma nova apresentação com o gráfico no modelo atualizado, que passará a exibir esse valor, e que não está vinculado à pasta de trabalho, e será salvo como output_i.pptx no mesmo diretório que do modelo.

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 Controlar estilos

As funções nesta seção podem ser usadas para, programaticamente, carregar, inspecionar e remover os estilos do think-cell. LoadStyle carrega um estilo de um arquivo de estilo para um slide mestre ou um único layout personalizado. LoadStyleForRegion carrega um estilo de um arquivo de estilo para uma região específica de um layout personalizado. GetStyleName retorna o nome de um estilo carregado em um slide mestre ou layout personalizado. RemoveStyles remove todos os estilos de um layout personalizado.

Consulte Criando um estilo do think-cell e D. Formato de arquivo de estilo para mais informações sobre como criar e editar estilos. Consulte Carregando arquivos de estilos para mais informações sobre como carregá-los.

As funções nesta seção são métodos do suplemento do think-cell no PowerPoint.

F.2.2.1 Carregar estilo

F.2.2.1.1 Assinatura
VBA
tcPpAddIn.LoadStyle( _ 
    CustomLayoutOrMaster As Object, _ 
    FileName As String 
)
C#
void tcPpAddIn.LoadStyle(
    object CustomLayoutOrMaster,
    string FileName
);
F.2.2.1.2 Descrição

Esta função carrega o estilo contido no arquivo de estilos em FileName para um layout mestre ou personalizado, especificado pelo parâmetro CustomLayoutOrMaster.

CustomLayoutOrMaster deve ser CustomLayout ou Master.

Ao ser aplicado a um layout personalizado onde um estilo regional tiver sido estabelecido (consultar Carregar estilo para região), o estilo regional será removido. Isso significa que é preciso carregar o estilo que será aplicado no restante do slide usando esta função antes de carregar um estilo restrito a uma região.

Ao ser aplicado a um slide mestre, qualquer estilo carregado nos layouts personalizados contidos nesse slide mestre, seja regional ou irrestrito, será removido. Isso significa que é preciso carregar o estilo que será aplicado a layouts personalizados sem um estilo específico no slide mestre, antes de carregar um estilo, aplicando a um layout personalizado específico usando esta função.

F.2.2.1.3 Exemplos
VBA

Para usar este exemplo, adicione o seguinte código a um módulo no PowerPoint (consultar Visual Basic for Applications para obter mais detalhes).

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 Carregar estilo para região

F.2.2.2.1 Assinatura
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 Descrição

Esta função carrega o arquivo de estilo para FileName no layout personalizado CustomLayout e o restringe para uma dada região por Left, Top, Width, Height. No restante do slide, aplica-se o estilo carregado no slide mestre, ou o que foi carregado anteriormente ao layout personalizado com LoadStyle.

Os parâmetros Left, Top, Width, Height são dados nos pontos do PowerPoint. Left e Top especificam a distância das bordas esquerda e superior da região das bordas esquerda e superior do layout personalizado, respectivamente. Geralmente, você os definirá como frações da altura e da largura total do slide. Por exemplo, para a região que cobre os dois terços do lado direito do layout personalizado, você deve configurar

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

Você também pode adicionar manualmente uma forma para um slide ou layout personalizado, consultar suas propriedades Left, Top, Width, Height programaticamente e usar os valores com LoadStyleForRegion para restringir o estilo para a mesma região coberta pela forma.

O think-cell suporta no máximo dois estilos por layout personalizado. Um é definido com LoadStyle e cobre tudo não restrito a uma região, o outro é definido com LoadStyleForRegion.

F.2.2.2.3 Exemplos
VBA

Para usar este exemplo, adicione o seguinte código a um módulo no PowerPoint (consultar Visual Basic for Applications para obter mais detalhes).

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 Obter nome do estilo

Compatível com think-cell 13 e posterior.

F.2.2.3.1 Assinatura
VBA
tcPpAddIn.GetStyleName( _ 
    CustomLayoutOrMaster As Object _ 
) As String
C#
string tcPpAddIn.GetStyleName(
    object CustomLayoutOrMaster
);
F.2.2.3.2 Descrição

Esta função retorna o nome do estilo carregado no CustomLayout ou Master CustomLayoutOrMaster. Este é o mesmo nome especificado no atributo name do elemento <style> do arquivo de estilos correspondente (consulte Estilo).

Ele retorna uma sequência vazia quando nenhum estilo é carregado no CustomLayoutOrMaster. Observe que um slide mestre sempre exibe um estilo carregado quando o think-cell é aberto, e o nome do estilo não pode estar vazio.

Se um nome retornar para um CustomLayout, será o nome do estilo carregado com Carregar estilo, não do estilo carregado com Carregar estilo para região, se for o caso.

F.2.2.3.3 Exemplos
VBA

Para usar este exemplo, adicione o seguinte código a um módulo no PowerPoint (consultar Visual Basic for Applications para obter mais detalhes).

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 Remover estilos

F.2.2.4.1 Assinatura
VBA
tcPpAddIn.RemoveStyles( _ 
    CustomLayout As PowerPoint.CustomLayout _ 
)
C#
void tcPpAddIn.RemoveStyles(
    PowerPoint.CustomLayout CustomLayout
);
F.2.2.4.2 Descrição

Esta função remove todos os estilos do layout personalizado CustomLayout. Posteriormente, o estilo carregado no slide mestre aplica-se. Potencialmente, pode haver um estilo carregado no layout personalizado e outro estilo restrito a uma região específica do layout personalizado. Como RemoveStyles remove todos os estilos, ambos serão removidos. O estilo carregado em um slide mestre não pode ser removido, pois sempre precisa ser um estilo válido associado a um slide mestre. Ele pode ser substituído por um arquivo de estilo diferente.

F.2.2.4.3 Exemplos
VBA

Para usar este exemplo, adicione o seguinte código a um módulo no PowerPoint (consultar Visual Basic for Applications para obter mais detalhes).

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 Importar gráficos Mekko Graphics

As funções nesta seção podem ser usadas para importar e inspecionar, programaticamente, gráficos criados com Mekko Graphics para o think-cell. ImportMekkoGraphicsCharts substitui gráficos Mekko Graphics por gráficos do think-cell equivalentes. GetMekkoGraphicsXML extrai a definição XML de um gráfico Mekko Graphics chart.

As funções nesta seção são métodos do suplemento do think-cell no PowerPoint.

F.2.3.1 Importar gráficos Mekko Graphics

Compatível com think-cell 13 e posterior.

F.2.3.1.1 Assinatura
VBA
tcPpAddIn.ImportMekkoGraphicsCharts ( _
    ashp As PowerPoint.Shape() _
) As PowerPoint.Slide
C#
PowerPoint.Slide tcPpAddIn.ImportMekkoGraphicsCharts(
    PowerPoint.Shape[] ashp
);
F.2.3.1.2 Descrição

Esta função substitui todos os gráficos Mekko Graphics na matriz de Shapes passados com um gráfico do think-cell equivalente. Todas as formas devem estar no mesmo slide. Antes de modificar o slide, a função faz uma cópia do slide não modificado e a insere diretamente após a versão modificada.

A função retorna uma referência a esta cópia, se houver.

Ela retorna Nothing/null, se a apresentação não tiver sido modificada, por exemplo, se a matriz não continha nenhum gráfico Mekko Graphics.

F.2.3.1.3 Exemplos
VBA

Para usar este exemplo, adicione-o a um módulo no PowerPoint (consultar Visual Basic for Applications para obter mais detalhes).

Ao executar ImportAll em uma apresentação, os slides serão exibidos na apresentação e todos os gráficos Mekko Graphics visíveis serão substituídos por gráficos do think-cell equivalentes, e será feita uma cópia de cada slide que contém uma antes de modificá-lo.

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 usar esta amostra, adicione este método à classe ThisAddIn do modelo do projeto do suplemento do PowerPoint VSTO da C# (consulte C# e Desenvolvimento de suplemento para obter mais detalhes).

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

Adicione a seguinte linha ao método ThisAddIn_Startup para executar ImportAll em cada apresentação que for aberta:

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

F.2.3.2 Obter XML do Mekko Graphics

Compatível com think-cell 13 e posterior.

F.2.3.2.1 Assinatura
VBA
tcPpAddIn.GetMekkoGraphicsXML ( _
    shp As PowerPoint.Shape _
) As String
C#
string tcPpAddIn.GetMekkoGraphicsXML(
    PowerPoint.Shape shp
);
F.2.3.2.2 Descrição

Esta função retorna o XML do gráfico Mekko Graphics no shp na forma de uma sequência. Ela não modifica a forma passada a ela.

Se shp não for um gráfico Mekko Graphics, uma mensagem de erro E_INVALIDARG (0x80070057) é exibida.

F.2.3.2.3 Exemplos
VBA

Para usar este exemplo, adicione o seguinte código a um módulo no PowerPoint (consultar Visual Basic for Applications para obter mais detalhes).

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 amostra, substitua-a pelo código no Program.cs de um aplicativo Console.

São necessárias referências à biblioteca de objetos do Microsoft PowerPoint 16.0 e biblioteca de objetos do Microsoft Office 16.0 (consulte C# para obter mais detalhes).

Ao executar o aplicativo a apresentação será exibida no C:\Samples\GetMekkoGraphicsXML\presentation.pptx e o XML dos gráficos Mekko Graphics contidos nela serão impressos no console.

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 Variado

As funções nesta seção são métodos do suplemento do think-cell no PowerPoint.

F.2.4.1 Iniciar inserção na tabela

Compatível com think-cell 13 e posterior.

F.2.4.1.1 Assinatura
VBA
tcPpAddIn.StartTableInsertion()
C#
void tcPpAddIn.StartTableInsertion();
F.2.4.1.2 Descrição

Chamar este método tem o mesmo efeito de clicar na Tabela no menu Elementos no PowerPoint.

Compartilhar