Como encontrar variáveis ​​de documento no MS Word sem usar uma macro

10

Eu tenho um documento com algumas variáveis ​​de documento e estou tentando usar essas variáveis ​​no documento. Mas como as variáveis ​​são definidas por um sistema externo (que não está bem documentado), estou jogando um jogo de adivinhação. Presumo que exista uma variável com "data da última revisão" e, em seguida, começo a adivinhar como essa variável poderia ter sido chamada.

Existe uma maneira de listar todas as variáveis ​​de documento em um documento do MS Word e seus valores para que você possa procurá-las ao usá-las no documento? (Estou trabalhando no MS Office 2010)

algum usuário
fonte

Respostas:

13

O Word possui vários tipos diferentes de "variável". Existem coisas conhecidas como "Variáveis ​​de documento", mas há outras que denominarei "propriedades" - tentarei listar os principais tipos abaixo.

Existem alguns lugares no Word que você pode procurar para encontrar alguns tipos de propriedades, mas para "variáveis" verdadeiras e outros tipos de propriedades, se você não puder usar macros ou outro código, será necessário descompactar o arquivo .docx e veja os vários arquivos lá.

Locais que você pode procurar no Word 2010 (nenhuma variável de documento é exibida aqui) ...

uma. Em "Backstage" - veja a guia Arquivo, opção Informações, e você verá algumas propriedades listadas à direita. Clique em "Mostrar todas as propriedades" na parte inferior da lista e você poderá ver mais.

b. Na guia Inserir, grupo Texto, Peças rápidas-> Propriedades, você verá uma lista de "Propriedades incorporadas + algumas ou todas as propriedades inseridas pelo Sharepoint, se é isso que você está usando.

c. No "Painel de informações do documento" (DIP). Se você não vê isso, entre no menu Arquivo, em Opções e, em seguida, (diga) Barra de Ferramentas de Acesso Rápido. Selecione "Escolher comandos" em "Todos os comandos", procure "Propriedades", selecione-o e clique no botão Adicionar. Você deve ver um ícone na barra de ferramentas Acesso rápido que possui um pequeno "i" branco sobre um fundo azul circular. Clique nele e você verá algumas propriedades internas (Autor, Título etc.) ou algumas propriedades "Tipo de conteúdo" do Sharepoint, se você estiver usando o SharePoint. Você pode alternar entre uma das várias visualizações lá. Se você clicar no menu suspenso no canto superior esquerdo do DIP e escolher "Propriedades avançadas", verá uma caixa de diálogo com várias guias que mostra

  • algumas propriedades "internas"

  • Propriedades de documento personalizadas "definidas pelo usuário" à moda antiga.

Para todo o resto, você provavelmente terá que procurar no XML no .docx. Para fazer isso, faça uma cópia do seu documento. Digamos que a cópia se chame mydoc.docx. Renomeie para mydoc.docx.zip, abra o zip e procure várias coisas, conforme sugerido abaixo ...

uma. true As variáveis ​​de documento são armazenadas na pasta word, em settings.xml, em um elemento chamado w: docVars. Você deve ver um nome e um valor para cada variável. Você pode inserir os valores de Variáveis ​​do documento no seu documento usando um campo {DOCVARIABLE variableename}.

b. Propriedades internas do documento, incluindo autor, título etc. Na maioria dos casos, os valores podem ser inseridos no documento usando campos comercializados como {AUTHOR} ou, em alguns casos, campos {DOCPROPERTY}. Embora seja um pouco confuso, há uma lista padrão de nomes. Você pode encontrar a maioria dos valores na pasta docProps nos arquivos core.xml e app.xml. No entanto, algumas (as "Propriedades da página de rosto") são armazenadas, se usadas, em um dos arquivos "item.xml" (por exemplo, "item1.xml" na pasta customXml.

c. propriedades de documento personalizadas "definidas pelo usuário" à moda antiga que consistem principalmente em pares de nome / valor cujos valores podem ser inseridos no documento usando os campos {DOCPROPERTY}, por exemplo, {DOCPROPERTY mycustomproperty}. Eles são exibidos na caixa de diálogo Propriedades avançadas ...., mas no .docx estão no arquivo custom.xml na pasta docProps.

d. propriedades personalizadas de novo estilo, também conhecidas como "propriedades do Sharepoint" ou "propriedades do tipo de conteúdo", porque geralmente são criadas e preenchidas a partir de colunas em uma lista do Sharepoint. Os valores são armazenados em "Peças XML personalizadas" e podem ser inseridos usando os Controles de conteúdo configurados para apontar para o bit relevante de XML. (Word 2007 e posterior apenas). No .docx, você encontrará vários "esquemas" para essas variáveis ​​e os valores das variáveis ​​na pasta customXML, nos arquivos denominados "item1.xml", "item2.xml" etc.

e finalmente, qualquer desenvolvedor pode colocar suas próprias partes XML personalizadas em um documento do Word e conectar o Content Controls a elementos e atributos nessas partes XML personalizadas. Não tentarei entrar em detalhes de como isso é feito, mas você encontrará os dados nos arquivos item1.xml, item2.xml etc. em customXML. No entanto, para encontrar os controles de conteúdo em si, seus nomes e o que eles também estão conectados, você normalmente precisa procurar na pasta de palavras em, por exemplo, document.xml e talvez um ou mais dos "cabeçalhos" e "rodapés". arquivos xml.

Chris
fonte
Ótima resposta. Obrigado! Uma observação: "b. Na guia Inserir, grupo Texto, Peças rápidas-> Propriedades, você deve ver uma lista de" Propriedades incorporadas + algumas ou todas as propriedades inseridas pelo Sharepoint, se é isso que você está usando. " O Quick Parts parece não ter "Propriedades"
algum usuário
Meu erro - que deve ser
Propriedades e DocVariables parecem bastante semelhantes em como você pode usá-las nos campos de palavras e no VBA. Existem trocas?
precisa saber é
5

Eu estava tendo um problema semelhante. Alguma caixa de ferramentas de terceiros estava travando e eu precisava definir um valor variável.

É um pouco grosseiro, mas aqui está um código VBA que digitei que listará todas as variáveis ​​da ActiveDocument.Variablescoleção;

Public Sub ListAllVariables()
    Dim V As Variable, S As String
    For Each V In ActiveDocument.Variables
        S = S & V.Name & vbTab & V.Value & vbNewLine
    Next V
    MsgBox S
End Sub

Você pode criar uma nova macro e despejá-la, o que deve fornecer as informações. Quando você encontrar o nome da variável em que está interessado, poderá configurá-la com

ActiveDocument.Variables("MyVariable") = "Value"
Steztric
fonte
2
Isso é muito legal, obrigado. É uma pena que a Microsoft não tenha fornecido um tipo de janela selecionadora pré-empacotada que você fornece a uma coleção e você recebe uma janela pop-up de duas colunas que permite selecionar um ou mais itens da coleção (ou adicionar um novo valor a a coleção real) e, em seguida, permite que seu código VBA acesse os itens selecionados na sub / função de chamada.
BenPen 4/11