PowerPoint VBA - maneira de colocar Tag na célula para identificar

1

Estou tentando testar o recurso de automação do MS PowerPoint usando o VBA.

Para minha exigência, qualquer célula da tabela DEVE ser marcada por um ID controlado e retornada usando esse ID. No entanto, não consegui identificar o caminho apropriado. Você tem alguma ideia?

  Dim slide As slide
  Dim t As Table
  Dim r As Integer
  Dim c As Integer
  Dim s As Shape
  Set slide = Application.ActivePresentation.Slides(1)
  Set t = slide.Shapes(1).Table
  Set s = t.Cell(1, 1).Shape
  ' t.Tags and s.Tags aren't accessible...
  ' Is there any way to put ID into the Cell or Shape of Cell?
  ... 
    
por sada 31.05.2017 / 15:04

2 respostas

0

Você provavelmente deve postar esta pergunta no StackOverflow, e não aqui; O SuperUser é dedicado às perguntas "Como usar este programa", StackOverflow para as consultas "Como eu programo isso".

Uma maneira de abordar isso é armazenar os dados da tag da tabela em uma matriz e, em seguida, converter a matriz em uma string como esta:

Row1Cell1Value | Row1Cell2Value | ... | Row1CellNValue ~ Row2Cell1Value | Row2Cell2Value | ... | Row2CellNValue e assim por diante, onde | é o separador entre valores de tag para cada célula na matriz e ~ é o separador entre as linhas.

Adicione esta string como tag no SLIDE onde a tabela reside, por exemplo:

ActivePresentation.Slides(1).Tags.Add TableName, BigOldStringOfTags

Quando você precisar recuperar as tags da tabela, você poderá recuperar essa grande string, dividida em ~ para criar uma matriz de strings, cada elemento representando uma linha de tags para a linha correspondente da tabela. Você poderia então dividir o elemento para obter as tags individuais para cada célula na linha.

Dependendo de suas necessidades, pode ser conceitualmente mais fácil fazer esse truque de doublesplit para reconstruir o array original de tags, para que cada elemento (x, y) do array corresponda à mesma célula (row, col) do array. tabela.

    
por 01.06.2017 / 16:59
0

Muito obrigado, Steve, e desculpe pela minha resposta lenta. Eu já tentei a mesma abordagem que você recomendou. No entanto, infelizmente, não cabe em tabelas variáveis. Ou seja, as informações de marca na tabela de nível superior serão invalidadas quando um usuário final inserir / remover / reordena linhas / colunas porque essas informações dependem essencialmente dos índices de linha / coluna no tempo de design. De acordo com a exigência, precisamos de uma abordagem que tenha redundância racional contra a modificação da tabela. A maneira mais fácil é identificar cada célula da tabela, mas não consegui encontrar uma boa implementação. Você tem alguma boa ideia? Eu também postar no StackOverflow, do que você para o seu conselho!

    
por 06.06.2017 / 01:01