Como fazer hiperlinks aparecerem corretamente no MS Word para arquivos criados em outros processadores de texto?

0

No meu trabalho, muitas vezes eu sou enviado artigos criados em uma variedade de processadores de texto, que eu abro e edito no Word 2013. No entanto, em termos de compatibilidade, é claro que eles não tocam muito bem juntos.

Não há formatação pesada envolvida, mas tenho tido problemas importantes e persistentes na visualização de hiperlinks nesses artigos.

  1. Uma pessoa escreve em Pages (Mac) e salva como .docx. Os hiperlinks em seus arquivos são sempre sublinhados, mas nunca em azul, como acontece no Word: eles são pretos. Também notei que, se eu adicionasse um link a um arquivo criado por ela, ele apareceria em texto sublinhado em preto, não em azul, como nos meus outros arquivos.

  2. Outra pessoa envia arquivos como .rtf - não sabe qual programa, mas em um Mac. Os hiperlinks em seus arquivos não têm formatação diferente do restante do texto. Somente quando você passa o mouse no Word, consegue ver que há um link ali. Quando visualizado no meu Word 2013, os hiperlinks e o texto normal são idênticos. Curiosamente, na visualização do Gmail, os links nesses arquivos aparecem bem (em azul, sublinhados), então estou usando isso como uma solução alternativa. Dito pessoa tentou salvar como docx em vez disso, mas os hiperlinks não sobreviveram a conversão em tudo - eles não estão lá quando você passa o mouse sobre onde eles costumavam ser.

Existe uma maneira para eu (em vez desses dois) alterar automaticamente esses arquivos após o recebimento para aqueles em que os hiperlinks aparecem normalmente, em cores diferentes e sublinhados?

O caso # 1 é suportável, mas # 2 tem sido uma dor por um tempo agora.

Exemplo de arquivo do caso nº 2 (contém apenas um hiperlink): link

    
por surfmadpig 31.05.2016 / 01:28

3 respostas

1

Eu estudei o arquivo de exemplo e acho que entendi a raiz do problema: O formato RTF tem campos de hiperlink, mas não possui o estilo de hiperlink. Apenas formatos de documentos mais evoluídos têm esse estilo: DOC, DOCX e DOCM.

Os campos de hiperlink no documento RTF estão definidos corretamente, mas com o estilo Normal, em vez de com o estilo Hyperlink. Infelizmente, o Word não pode corrigir esse problema automaticamente.

A solução que usei para corrigir o arquivo de exemplo foi:

  1. Salve o arquivo RTF como DOCM para que ele tenha um estilo de hiperlink (DOCM é exatamente o mesmo que DOCX, exceto que as macros são permitidas)
  2. Executar uma macro VBA que define o estilo de todos os campos de hiperlink para o hiperlink

A macro VBA que usei está listada abaixo:

Sub hyper()
For Each oHyperlink In ActiveDocument.Hyperlinks
    oHyperlink.Range.Style = ActiveDocument.Styles("Hyperlink")
Next oHyperlink
ActiveDocument.Range.Fields.Update
End Sub

A vantagem desta solução é que ela atribui o estilo real do Hyperlink a todos campos de hiperlink. Isto é melhor do que apenas fazer mudanças cosméticas, como a cor da fonte e sublinhado.

    
por 06.06.2016 / 16:16
0

Se todos os hiperlinks forem realmente hyperlinks (não apenas texto), então

Não se preocupe mais com meu amigo

10 passos fáceis esperam por você.

Tente isto:

  1. Pressione Alt+F9 no documento em que você deseja ver a alteração (isso transformará e revelará todos os hiperlinks, nada para se preocupar).
  2. Pressione Ctrl+H para abrir Find and Replace .
  3. Digite ^d hyperlink na caixa Find .
  4. Mova o cursor e selecione a caixa Replace with , mas não digite nada.
  5. Clique no botão More abaixo do campo Replace with .
  6. Clique no botão Format abaixo das outras opções que você acabou de revelar.
  7. Clique em Style .
  8. Selecione Hyperlink na lista (pressione H no teclado para encontrá-lo mais facilmente) e clique em OK .
  9. Clique em Replace All e voila! tudo feito.
  10. Feche a janela Find and Replace e pressione Alt+F9 .

DICA: Se você não quiser fazer isso toda vez para cada documento, poderá criar uma função Macro e colocá-la na Faixa de Opções. Apenas um clique do mouse a partir de então.

Espero que ajude.

    
por 31.05.2016 / 16:20
0

Demasiado grande para um comentário (o que deve ser porque isto não é bem testado e pode não fazer o que você quer).

Se a AutoFormatação não fizer o suficiente (conforme nossa conversa em Comentários), acho que você precisará fazer uma quantia justa para cada hiperlink, ou seja,

  • garantir que ele tenha sido reconhecido como um hiperlink pelo Word (nesse caso você deve conseguir ver um código de campo {HYPERLINK} se usar Alt-F9)
  • aplica o estilo de caractere de hiperlink ao resultado do HYPERLINK campo
  • reaplique a formatação de caracteres ao resultado do campo HYPERLINK para corrigir o dano que a imposição do estilo Hyperlink pode fazer

Se o texto importado contiver um número de hiperlinks, fazer tudo isso provavelmente será bastante entediante, portanto, a parte a seguir do VBA tem como objetivo corrigir os hiperlinks no corpo do documento do Word atualmente ativo.

Ele só detecta coisas que o Word acha que são hiperlinks (não necessariamente tudo que você espera).

Sugiro que, se possível, você abra qualquer texto importado como documento separado na primeira instância e execute este código. Isso deve minimizar os efeitos colaterais indesejáveis.

A coisa sobre o estilo de caractere de hiperlink é que ele aplica a "Fonte de parágrafo padrão", que pode não ter as mesmas propriedades (por exemplo, tamanho etc.) do texto existente. Mesmo se você modificar o estilo para usar "Propriedades subjacentes", pode alterar o tamanho do texto e assim por diante. Então, o que eu fiz aqui é olhar as propriedades do primeiro caractere no "texto de exibição" do Hyperlink e reaplicá-lo ao texto de exibição inteiro depois de aplicar o estilo Hyperlink.

Mas se você estiver aplicando seus próprios estilos de parágrafo ao texto importado, é mais provável que o estilo de texto com o estilo Hyperlink faça o que você deseja de qualquer maneira, então você pode remover esse bit de VBA.

Se você precisar procurar hiperlinks em outras "histórias" no documento, como caixas de texto, cabeçalhos / rodapés, etc., você definitivamente precisará de mais.

Private Type AutoFormatOptions
  bAutoFormatApplyBulletedLists As Boolean
  bAutoFormatApplyFirstIndents As Boolean
  bAutoFormatApplyHeadings As Boolean
  bAutoFormatApplyLists As Boolean
  bAutoFormatApplyOtherParas As Boolean
  bAutoFormatDeleteAutoSpaces As Boolean
  bAutoFormatMatchParentheses As Boolean
  bAutoFormatPlainTextWordMail As Boolean
  bAutoFormatPreserveStyles As Boolean
  bAutoFormatReplaceFarEastDashes As Boolean
  bAutoFormatReplaceFractions As Boolean
  bAutoFormatReplaceHyperlinks As Boolean
  bAutoFormatReplaceOrdinals As Boolean
  bAutoFormatReplacePlainTextEmphasis As Boolean
  bAutoFormatReplaceQuotes As Boolean
  bAutoFormatReplaceSymbols As Boolean
End Type
Sub fixUpHyperlinks()

Dim afo As AutoFormatOptions

Dim f As Word.Font

Dim h As Word.Hyperlink
' Save existing autoformat options

With Application.Options
  afo.bAutoFormatApplyBulletedLists = .AutoFormatApplyBulletedLists
  afo.bAutoFormatApplyFirstIndents = .AutoFormatApplyFirstIndents
  afo.bAutoFormatApplyHeadings = .AutoFormatApplyHeadings
  afo.bAutoFormatApplyLists = .AutoFormatApplyLists
  afo.bAutoFormatApplyOtherParas = .AutoFormatApplyOtherParas
  afo.bAutoFormatDeleteAutoSpaces = .AutoFormatDeleteAutoSpaces
  afo.bAutoFormatMatchParentheses = .AutoFormatMatchParentheses
  afo.bAutoFormatPlainTextWordMail = .AutoFormatPlainTextWordMail
  afo.bAutoFormatPreserveStyles = .AutoFormatPreserveStyles
  afo.bAutoFormatReplaceFarEastDashes = .AutoFormatReplaceFarEastDashes
  afo.bAutoFormatReplaceFractions = .AutoFormatReplaceFractions
  afo.bAutoFormatReplaceHyperlinks = .AutoFormatReplaceHyperlinks
  afo.bAutoFormatReplaceOrdinals = .AutoFormatReplaceOrdinals
  afo.bAutoFormatReplacePlainTextEmphasis = .AutoFormatReplacePlainTextEmphasis
  afo.bAutoFormatReplaceQuotes = .AutoFormatReplaceQuotes
  afo.bAutoFormatReplaceSymbols = .AutoFormatReplaceSymbols
End With
On Error GoTo cleanup

' set everything the way we want

With Application.Options
  ' all false
  .AutoFormatApplyBulletedLists = False
  .AutoFormatApplyFirstIndents = False
  .AutoFormatApplyHeadings = False
  .AutoFormatApplyLists = False
  .AutoFormatApplyOtherParas = False
  .AutoFormatDeleteAutoSpaces = False
  .AutoFormatMatchParentheses = False
  .AutoFormatPlainTextWordMail = False
  .AutoFormatPreserveStyles = False
  .AutoFormatReplaceFarEastDashes = False
  .AutoFormatReplaceFractions = False
  ' except this one
  .AutoFormatReplaceHyperlinks = True
  .AutoFormatReplaceOrdinals = False
  .AutoFormatReplacePlainTextEmphasis = False
  .AutoFormatReplaceQuotes = False
  .AutoFormatReplaceSymbols = False
End With

With ActiveDocument

  ' Apply the selected formats
  .Kind = wdDocumentNotSpecified
  .Content.AutoFormat

  ' Now apply the Hyperlink style to all Hyperlink field result ranges

  For Each h In .Hyperlinks
    With .Range.Fields(1).Result
      If .Characters.Count >= 1 Then
        ' Remove the following line if the Hyperlink style works for you
        Set f = .Characters(1).Font.Duplicate
        ' Apply the Hyperlink style
        .Style = ActiveDocument.Styles(wdStyleHyperlink).NameLocal
        ' Remove the following 2 lines if the Hyperlink style works for you
        Set .Font = f
        set f = Nothing
      End If
    End With
  Next

End With

cleanup:
' restore the original settings

With Application.Options
  .AutoFormatApplyBulletedLists = afo.bAutoFormatApplyBulletedLists
  .AutoFormatApplyFirstIndents = afo.bAutoFormatApplyFirstIndents
  .AutoFormatApplyHeadings = afo.bAutoFormatApplyHeadings
  .AutoFormatApplyLists = afo.bAutoFormatApplyLists
  .AutoFormatApplyOtherParas = afo.bAutoFormatApplyOtherParas
  .AutoFormatDeleteAutoSpaces = afo.bAutoFormatDeleteAutoSpaces
  .AutoFormatMatchParentheses = afo.bAutoFormatMatchParentheses
  .AutoFormatPlainTextWordMail = afo.bAutoFormatPlainTextWordMail
  .AutoFormatPreserveStyles = afo.bAutoFormatPreserveStyles
  .AutoFormatReplaceFarEastDashes = afo.bAutoFormatReplaceFarEastDashes
  .AutoFormatReplaceFractions = afo.bAutoFormatReplaceFractions
  .AutoFormatReplaceHyperlinks = afo.bAutoFormatReplaceHyperlinks
  .AutoFormatReplaceOrdinals = afo.bAutoFormatReplaceOrdinals
  .AutoFormatReplacePlainTextEmphasis = afo.bAutoFormatReplacePlainTextEmphasis
  .AutoFormatReplaceQuotes = afo.bAutoFormatReplaceQuotes
  .AutoFormatReplaceSymbols = afo.bAutoFormatReplaceSymbols
End With

'    Application.Options.AutoFormatApplyBulletedLists
'    Selection.Document.Kind = wdDocumentNotSpecified
'    Selection.Range.AutoFormat
End Sub
    
por 06.06.2016 / 12:46