Powerpoint: como inserir propriedade do documento (também conhecida como 'campo') no slide?

31

Como posso inserir uma propriedade do documento (por exemplo, o nome do autor) em um slide no PowerPoint 2007? Eu sei que isso pode ser feito no Microsoft Word, mas não consigo encontrar como fazê-lo no PowerPoint.

(A idéia é que, com uma propriedade de documento, é fácil alterar, por exemplo, o conteúdo do rodapé em todos os slides, mesmo se você usar páginas mestras diferentes. Se houver uma solução diferente, isso também seria bom.)

Rabarberski
fonte

Respostas:

19

Enquanto o Word pode fazer isso, o PowerPoint não pode. AFAIK, você pode ter propriedades de documento no PPT, mas não pode inseri-las em um slide. O único campo de atualização disponível para o PowerPoint é a data e o número do slide. De qualquer forma, pode haver alguma solução alternativa no VBA para conseguir isso. Você pode solicitar isso no Stackoverflow para aproveitar sua chance.

Mehper C. Palavuzlar
fonte
6

Acabei de escrever uma sub-rotina para colocar propriedades nomeadas em objetos de texto marcados em todos os slides.

Para colocar uma propriedade de arquivo nos slides. Crie uma caixa de texto para armazenar a string. Nas propriedades / Texto alternativo, coloque o nome da propriedade entre colchetes.

Em seguida, execute a macro updateProperties().

ie [title]- permitiria que o título do documento fosse atualizado em vários

Duas tags especiais foram escritas:

  • [copyright]inseriria uma sequência de direitos autorais, ou seja, © 1998-2013 P.Boothroyd, NIS Oskemen
  • [page] inseriria o número do slide na guia do editor
  • 'Copiar propriedades do documento para todos os slides
    «c) 2013, P. Boothroyd para o NIS Oskemen
    Página de slides
    
    Sub updateProperties ()
        Dim página como slide
        Dim propname As String
        'analisar todos os slides na apresentação ativa (documento)
        Para cada processPage em Application.ActivePresentation.Slides
            'digitalize todos os elementos da página em busca da caixa de texto com o campo "altText / title" marcado com "["
            Para cada obj No processPage.Shapes
                Se esquerda (obj.Title, 1) = "[" Então
                    Dim sStart, sEnd As Inteiro
                    'extrair propriedade entre colchetes
                    sStart = 2
                    sEnd = InStr (2, obj.Title, "]")
                    propname = Trim (Médio (obj.Title, sStart, sEnd - 2))
                    If obj.Type = msoTextBox Then
                        'defina a caixa de texto com o valor solicitado
                        obj.TextFrame.TextRange.Text = getProperty (nome do objeto, obj.TextFrame.TextRange.Text)
                    Fim se
                Fim se
            Próximo 'obj
        Próxima página
    End Sub
    
    'obtém a propriedade do documento nomeado (com padrão opcional)
    Função getProperty (propname, Opcional def As String) Como String
        propriedade 'atribuída o valor padrão
        getProperty = def
        Dim encontrado como booleano
        encontrado = Falso
        propname = LCase (propname)
    
        'copyright é uma propriedade gerada
        Se propname = "copyright" Então
            Autor não Dim como String
            Dim empresa como String
            Ano de escurecimento
            Dim yearTo As String
    
            'obtém todas as variáveis ​​apropriadas
            author = getProperty ("autor", "")
            company = getProperty ("company", "")
            yearFrom = getProperty ("created", "")
            yearTo = Format (Now (), "AAAA")
    
            'inserir símbolo de direitos autorais
            getProperty = Chr (169) + ""
    
            'anexar período do ano para aviso de direitos autorais
            If yearFrom yearTo Then
                getProperty = getProperty + yearFrom + "-"
            Fim se
            getProperty = getProperty + yearTo
    
            adicionar o autor
            getProperty = getProperty + "" + autor
    
            'adicione separador para autor / empresa, se ambos existirem
            Se Len (autor)> 0 E Len (empresa)> 0 Então
                getProperty = getProperty & ","
            Fim se
            getProperty = getProperty & company
    
            'processado, então retorne o valor
            found = True
        Fim se
    
        'insira o número do slide no documento
        Se propname = "página" Então
            getProperty = processPage.SlideNumber
            found = True
        Fim se
    
        'se o nome gerado criado retornar o valor
        Se encontrado, o GoTo ret
    
        'procure propriedades padrão de MS (arquivo) do valor nomeado
        Para cada p Em Application.ActivePresentation.BuiltInDocumentProperties
            Se LCase (p.Name) = propname Then
                getProperty = p.Value
                found = True
                Sair para
            Fim se
        Próximo 'p
    
        'procure propriedades personalizadas do valor nomeado
        Se encontrado, o GoTo ret
        Para cada p Em Application.ActivePresentation.CustomDocumentProperties
            Se LCase (p.Name) = propname Then
                getProperty = p.Value
                found = True
                Sair para
            Fim se
        Próximo 'p
    ret:
    Função final
    
    P.Boothroyd
    fonte
    1

    Uma solução alternativa é usar propriedades personalizadas que você pode facilmente "Ir para" (não é necessário percorrer os slides).

    Em http://msdn.itags.org/powerpoint/4426/ :

    1. Selecione a forma ou o texto para o qual você deseja definir um marcador.
    2. Selecionar arquivo | Propriedades ... e ative a guia Personalizado.
    3. Digite um nome para o marcador.
    4. Marque "Link para o conteúdo". O valor listado na caixa suspensa adjacente quando você marca 'Vincular ao conteúdo' é uma referência à sua seleção.
    5. Clique em Adicionar.
    6. Clique em OK para fechar a caixa de diálogo Propriedades.

    Agora que você criou um marcador, pode pular para ele da seguinte maneira:
    1. Selecione Editar | Saltar Propriedade ...
    2. Clique no nome da Propriedade na caixa de diálogo (este é o nome que você deu ao marcador).
    3. Clique em Ir para.

    A caixa de diálogo "Ir para" apresenta uma lista de favoritos nos quais você pode clicar duas vezes e vai para as caixas de texto favoritas, prontas para serem editadas / coladas.

    thenonhacker
    fonte
    1

    A maneira mais fácil de fazer isso no Powerpoint (pelo menos para os valores que aparecerão em todos os slides) é editar o slide mestre. Coloque o nome do autor lá.

    (Um possível motivo pelo qual o Word permite, e nenhum dos outros o faz, é que as várias equipes da Microsoft raramente conversam entre si ...)

    Tor Iver Wilhelmsen
    fonte
    1
    Ver o segundo parágrafo na minha pergunta: '... mesmo se você usar diferentes páginas mestre ...'
    Rabarberski
    0

    Atualização para o código de manipulação com ppt 2019: Alterei um pouco a rotina para a próxima etapa, a causa é que é mais fácil para um usuário front-end alterar o "texto alternativo" com o botão direito do mouse:

        For Each ShapeObj In processPage.Shapes
             If Left(ShapeObj.AlternativeText, 1) = "[" Then
            'If Left(ShapeObj.Title, 1) = "[" Then
                Dim sStart, sEnd As Integer
                ' extract property from between square brackets
                sStart = 2
                'sEnd = InStr(2, ShapeObj.Title, "]")
                sEnd = InStr(2, ShapeObj.AlternativeText, "]")
                'propname = Trim(Mid(ShapeObj.Title, sStart, sEnd - 2))
                propname = Trim(Mid(ShapeObj.AlternativeText, sStart, sEnd - 2))
                    ShapeObj.TextFrame.TextRange.Text = getProperty(propname, ShapeObj.TextFrame.TextRange.Text)
    
            End If
        Next ' obj
    
    Patric Tilge
    fonte