Armazenar variável no MS Word e usá-la no aplicativo para variável no hiperlink?

Armazenar variável no MS Word e usá-la no aplicativo para variável no hiperlink?

Tenho um cenário em que forneço mais do que20 hiperlinksde uma VM. Então, se as VMsIP é alterado, Precisoalterar manualmentepor todo o documento. Existe alguma maneira de armazenar variáveis ​​como

vm_ip = "ec2-13-211-bla-bla.amazonaws.com"

Então, em vez de fornecer hiperlinkec2-13-211-bla-bla.amazonaws.com/swagger-ui.html/food-controller, Eu posso dar{vm_ip}/swagger-ui.html/food-controller

Algo assim. Eu estava pesquisando macro, mas era confuso e não fazia ideia de como funciona.

Responder1

  1. Isso pode ser muito mais complicado do que parece, e é por isso que esta resposta é bastante longa. Existem algumas coisas importantes para entender e muitas etapas. Na IMO, isso não é algo que você possa confiar que o usuário final fará corretamente, pelo menos não sem um conjunto muito bom de instruções. Pessoalmente, acho que é uma tarefa de "programação" e, como não é algo que alguém provavelmente faça com frequência, eu diria que ainda precisa de um bom conjunto de instruções.

  2. Se você deseja apenas que esses hiperlinks funcionem no Word, existem duas possibilidades principais, dependendo se você deseja que esses hiperlinks sejam apenas textos ou hiperlinks ativos.

    Se você deseja inseri-los no Word de forma que funcionem quando você salva o documento como HTML ou PDF, esta resposta não cobre isso e você deve modificar sua pergunta para incluir esse requisito. Além disso, a codificação de campo descrita aqui só pode ser usada em versões desktop do Word (também pode funcionar em uma das versões da web ou de "dispositivo", mas a última vez que olhei essas versões não funcionam bem com códigos de campo.

  3. Portanto, se você deseja que esses links sejam textos no Word que o Word não trata como links ativos (por exemplo, eles podem estar no seu documento para que as pessoas possam copiar o texto do link em outro lugar), você pode fazer isso usando SET e marcador Campos.

    Por exemplo, se você tiver apenas um endereço "base", como "ec2-13-211-bla-bla.amazonaws.com" que reutiliza em muitos lugares, talvez com informações de endereço adicionais, você pode usar

    {SET base1 "ec2-13-211-bla-bla.amazonaws.com" }

    no início do seu documento (na verdade, no cabeçalho da primeira página pode ser um local mais seguro para colocá-lo para evitar exclusão acidental). Então seguindo o exemplo que você deu, você precisa de um campo REF:

    {REF base1}/swagger-ui.html/food-controller

    (Na verdade, há uma vantagem em omitir o REF):

    {base1}/swagger-ui.html/food-controller

    Todos os { } precisam ser pares de chaves de código de campo especiais que você pode inserir usando ctrl-F9 na versão do Word para desktop do Windows.

    Até onde eu sei, a separação do URL completo em um campo REF e algum texto simples impede que o Word tente transformar o texto do link resultante em um campo HYPERLINK clicável.

    Quando você precisar alterar "ec2-13-211-bla-bla.amazonaws.com" para outra coisa, por exemplo, talvez seja apenas para "ec2-13-211-new-bla-bla.amazonaws.com", você modifica isso texto no campo SET, atualize o campo SET (selecione e pressione F9) e depois atualize todos os outros campos (por exemplo, ctrl-A, F9).

    Se quiser algo um pouco mais difícil de excluir acidentalmente do que um campo SET, você pode criar e usar uma propriedade de documento personalizada. por exemplo, no Word 2016/2019/365,

    a. vá em Arquivo->Informações

    b. clique no menu suspenso Propriedades (na parte superior da coluna da direita)

    c. clique em Propriedades Avançadas

    d. clique na guia personalizada

    e. na caixa de texto, digite "base1"

    f. na caixa Tipo, certifique-se de que "Texto" esteja selecionado

    g. na caixa Valor, digite ec2-13-211-bla-bla.amazonaws.com

    h. certifique-se de que a caixa "Link para conteúdo" esteja desmarcada

    eu. Clique OK

    Então a codificação de campo necessária para o link é

    { DOCPROPERTY base1 }/swagger-ui.html/food-controller

    Para atualizar os links, você voltaria à caixa de diálogo Propriedade personalizada, alteraria o valor da propriedade demo1, selecionaria o texto do documento e atualizaria todos os campos do documento (ctrl-A, F9 novamente).

    Se você tiver vários "endereços base" diferentes, precisará de vários campos SET ou de várias propriedades personalizadas do documento, por exemplo, chamadas de base1, base2, base3 ou qualquer outra.

  4. Se você deseja um campo de hiperlink clicável, fica um pouco mais complicado, porque você precisa aninhar seu campo REF dentro de um campo HYPERLINK como este:

    { HIPERLINK "{ base1 }/swagger-ui.html/food-controller" }

    De novo,todosos { } devem ser aqueles caracteres especiais de chave de campo ctrl-F9, não aqueles que você pode digitar no teclado

    Mas existem dois problemas:

    a. O texto de exibição é corrigido quando o Word cria pela primeira vez o campo HYPERLINK (ou quando você o atualiza pela primeira vez). Além disso, foi corrigido para ser igual ao "texto do link" inicial que você forneceu.

    b. O Word tende a resolver o campo REF (ou seja, substituir o campo pelo seu resultado) quando você salva, fecha e reabre o documento. Nesse ponto, você perde a capacidade de modificar o endereço base e atualizar os hiperlinks.

    Você provavelmente não notará (b) se experimentar um campo de hiperlink, porque o que parece impedir o Word de resolver o campo REF é ter um marcador (que você pode inserir manualmente ou usando um campo SET) em algum lugar no campo HYPERLINK . Como o Word insere um marcador oculto chamado _GoBack no ponto de inserção, se a última coisa que você fez antes de fechar o documento foi editar um campo HYPERLINK,queos campos aninhados do campo provavelmente serão preservados quando você reabrir.

    Portanto, o truque para evitar que os campos HYPERLINK percam sua codificação aninhada é garantir que cada um tenha um marcador. Você pode fazer isso inserindo um campo SET com um nome diferente em cada HYPERLINK, assim:

    { HYPERLINK "{ base1 }/swagger-ui.html/food-controller" { SET save1 " " } } { HYPERLINK "{ base1 }/swagger-ui.html/something-else" { SET save2 " " } }

    ou você pode tentar gerar um novo nome de marcador automaticamente para cada campo de hiperlink, usando uma codificação como esta:

    { HYPERLINK "{ base1 }/swagger-ui.html/food-controller" { SET "save{ SEQ save }" " " } } { HYPERLINK "{ base1 }/swagger-ui.html/something-else" { SET " salvar{ SEQ salvar }" " " } }

    (NB, acredito que essa ideia se originouaqui. O fato de depender de um “truque” significa que a Microsoft poderia facilmente prejudicá-lo fazendo uma alteração no software, mas parece funcionar no momento.)

    Você deve ser capaz de usar campos SET/REF ​​ou a abordagem Custom Document Property para a parte { base1 }, conforme descrito acima.

    Finalmente, e o problema (a), ou seja, o “texto de exibição” do link?

    Na verdade, isso é um pouco mais difícil de resolver.

    A. Suponha que você queira um "texto de exibição" que seja independente do "texto do link" - por exemplo, se você quiser que o texto de exibição seja

    meu texto de exibição

    então, primeiro, eu criaria o hiperlink para o campo que você eventualmente usará, por exemplo

    { HIPERLINK "{ base1 }/swagger-ui.html/food-controller" { SET save1 " " } }

    Então, onde você realmente deseja o hiperlink, insira um hiperlink que mostre o texto de exibição desejado. Uma maneira é inserir um campo HYPERLINK manualmente, por exemplo

    • use ctrl-F9 para inserir um par de colchetes de código de campo { }

    • dentro, digite HYPERLINK "meu texto de exibição"

    • selecione o campo e use F9 para atualizar seu resultado. O resultado deve mostrar o texto que você deseja

    • selecione e copie todo o texto desse outro campo HYPERLINK "{ base1 }/swagger-ui.html/food-controller" { SET save1 " " }

    • selecione HYPERLINK "meu texto de exibição" e cole o outro código para substituí-lo

    • atualize o valor do campo.

    Há um problema com isso que pode se tornar aparente se você ler “B”. Vou explicar no final.

    B. Se, em vez disso, você quiser que o texto de exibição seja igual ao texto do link, você terá que contar com outro truque.

    Digamos que você usou esta codificação

    { SET base1 "ec2-13-211-bla-bla.amazonaws.com" }
    
    { HYPERLINK "{ base1 }/swagger-ui.html/food-controller" { SET save1 " " } }
    

    Então o que você tem que fazer éexcluiro marcador "base1" e atualize os campos HYPERLINK. Nesse ponto, você verá que o resultado do campo HYPERLINK mostra um erro como este (na versão em inglês do Word):

    Error! Hyperlink reference not valid.
    

    Isso parece redefinir o texto de exibição. Agora você pode recriar o marcador base1 com o endereço desejado e atualizar todos os campos HYPERLINK novamente.

    Ao usar campos SET e campos REF, você não precisa excluir o campo SET. Você altera o SET para SEQ:

    { SET base1 "ec2-13-211-bla-bla.amazonaws.com" }
    

    para

    { SEQ base1 "ec2-13-211-bla-bla.amazonaws.com" }
    

    Em seguida, atualize o campo e isso destruirá o marcador.

    Depois de atualizar os hiperlinks, você altera SEQ de volta para SET e modifica o endereço, por exemplo, para ter

    { SET base1 "ec2-13-211-new-bla-bla.amazonaws.com" }
    

    em seguida, atualize o campo e, em seguida, todos os campos do HYPERLINK.

    Fazer o mesmo com Propriedades personalizadas do documento é provavelmente um pouco mais complicado porque você pode renomear as propriedades em uma única etapa. O melhor que você provavelmente pode fazer é selecionar a propriedade na lista, alterar o nome e clicar em Adicionar. Isso realmente cria uma nova propriedade. Exclua o antigo, atualize os campos HYPERLINK e, em seguida, volte e recrie os nomes e valores das propriedades necessários.

    Como observação final, se você realmente precisa da abordagem "A", onde o texto exibido não se altera, você devenãofaça qualquer coisa que exclua o valor do marcador "base1". Se você fizer isso, o texto exibido será redefinido e você provavelmente terá que inserir novamente um campo HYPERLINK que recriará o texto desejado. Não é bom.

Responder2

Se quiser apenas definir o valor, pode usar o que @yokki disse.

Para hiperlink, o Word fornece "base de hiperlink". Então, se você fornecer "swagger-ui.html/food-controller" no hiperlink, será necessário {$hyperlink_base}/swagger-ui.html/food-controller. Se você quiser usar hiperlink de outros sites e não quiser usar "base de hiperlink", use URL completo.

Como definir a "base do hiperlink"?

  1. Vá para a faixa "Arquivo"
  2. Parte superior direita "Propriedades"
  3. clique nele e selecione "Propriedades avançadas".
  4. Somente na guia "resumo", o último campo contém "Base do hiperlink".

No meu caso, configurei como "ec2-13-211-bla-bla.amazonaws.com".

Então, todos os meus links onde forneci o caminho relativo, não o URL inteiro,

É necessário "ec2-13-211-bla-bla.amazonaws.com/swagger-ui.html/food-controller".

Então, se eu precisar alterar o IP, irei apenas atualizar a "base do hiperlink".

informação relacionada