На моей работе мне часто отправляют статьи, созданные в различных текстовых редакторах, которые я открываю и редактирую в Word 2013. Однако с точки зрения совместимости, конечно, они не очень хорошо играют вместе.

Нет большого форматирования, но у меня были серьезные, постоянные проблемы с просмотром гиперссылок в этих статьях.

  1. Один человек пишет в Pages (Mac) и сохраняет как .docx. Гиперссылки в ее файлах всегда подчеркнуты, но никогда не выделяются синим цветом, как это происходит в Word: они черные. Я также заметил, что если я добавлю ссылку на созданный ею файл, он будет выделен черным подчеркнутым текстом, а не синим подчеркнутым, как в других моих файлах.

  2. Другой человек отправляет файлы как .rtf - не уверен, что программа, но на Mac. Гиперссылки в его файлах не имеют форматирования, отличного от остального текста. Только когда вы наведете курсор мыши в Word, вы увидите, что там есть ссылка. При просмотре в моем Word 2013 гиперссылки и обычный текст идентичны. Интересно, что в предварительном просмотре Gmail ссылки в этих файлах выглядят хорошо (синие, подчеркнуты), поэтому я использовал это в качестве обходного пути. Упомянутый человек вместо этого попытался сохранить как .docx, но гиперссылки вообще не пережили преобразования - их даже нет, когда вы наводите курсор мыши на то место, где они были раньше.

Есть ли способ для меня (а не для этих двух) автоматически изменять эти файлы при получении на файлы, на которых гиперссылки отображаются нормально, другого цвета и подчеркнуты?

Случай № 1 терпим, но № 2 уже некоторое время испытывает боль.

Пример файла дела № 2 (содержит только одну гиперссылку): http://s000.tinyupload.com/index.php?file_id=45065577867642123191

3 ответа3

1

Я изучил файл примера и думаю, что понял корень проблемы: формат RTF имеет поля гиперссылок, но не имеет стиля гиперссылки. Этот стиль имеют только более развитые форматы документов: DOC, DOCX и DOCM.

Поля гиперссылки в документе RTF определены правильно, но в стиле Normal, а не в стиле Hyperlink. К сожалению, Word не может автоматически исправить эту проблему.

Решение, которое я использовал для исправления файла примера:

  1. Сохраните файл RTF как DOCM, чтобы он имел стиль гиперссылки
    (DOCM точно такой же, как DOCX, за исключением того, что допустимы макросы)
  2. Запустите макрос VBA, который устанавливает стиль всех полей гиперссылки на гиперссылку.

Макрос VBA, который я использовал, указан ниже:

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

Преимущество этого решения заключается в том, что оно назначает настоящий стиль гиперссылки всем полям гиперссылки. Это лучше, чем делать косметические изменения, такие как цвет шрифта и подчеркивание.

0

Слишком большой для комментария (который должен быть, потому что это не хорошо проверено и может не делать то, что вы хотите).

Если Автоформат не делает достаточно (согласно нашему разговору в комментариях), я думаю, что вам нужно будет сделать изрядную сумму для каждой гиперссылки, т.е.

  • убедитесь, что Word распознал ее как гиперссылку (в этом случае вы должны увидеть код поля {HYPERLINK}, если используете Alt-F9)
  • применить стиль символа гиперссылки к результату поля HYPERLINK
  • повторно примените форматирование символов к результату поля HYPERLINK, чтобы исправить ущерб, который может нанести стиль гиперссылки

Если импортированный текст содержит несколько гиперссылок, выполнение всего этого, вероятно, будет довольно утомительным, поэтому следующий фрагмент VBA предназначен для исправления гиперссылок в теле текущего активного документа Word.

Он будет обнаруживать только то, что Word считает гиперссылками (не обязательно все, что вы ожидаете).

Я бы посоветовал вам, если возможно, сначала открыть любые импортированные тексты как отдельные документы, а затем запустить этот код. Это должно минимизировать нежелательные побочные эффекты.

Особенность стиля символа Гиперссылка заключается в том, что он применяет "Шрифт абзаца по умолчанию", который может не иметь таких свойств (например, размер и т.д.), Как у существующего текста. Даже если вы измените стиль, чтобы использовать "Базовые свойства", он может изменить размер текста и так далее. Итак, что я сделал здесь, так это посмотрел на свойства первого символа в "отображаемом тексте" для гиперссылки и повторно применил его ко всему отображаемому тексту после применения стиля гиперссылки.

Но если вы применяете свои собственные стили абзаца к импортированному тексту, более вероятно, что текст, стилизованный с помощью стиля гиперссылки, все равно будет делать то, что вы хотите, так что вы можете удалить этот бит VBA.

Если вам нужно искать гиперссылки в других "историях" в документе, таких как текстовые поля, верхние и нижние колонтитулы и т.д., Вам определенно понадобится больше.

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
0

Если все гиперссылки на самом деле являются гиперссылками (а не только текстом), то

Не беспокойся, мой друг

10 простых шагов ждут вас.

Попробуй это:

  1. Нажмите Alt+F9 в документе, в котором вы хотите увидеть изменения (это преобразит и покажет все гиперссылки, не о чем беспокоиться).
  2. Нажмите Ctrl+H чтобы открыть Find and Replace .
  3. Введите ^d hyperlink в поле Find .
  4. Переместите курсор и выберите « Replace with , но ничего не вводите.
  5. Нажмите на кнопку « More под полем « Replace with .
  6. Нажмите на кнопку « Format под другими опциями, которые вы только что открыли.
  7. Нажмите на Style .
  8. Выберите Hyperlink из списка (нажмите H на клавиатуре, чтобы найти ее более легко) и нажмите OK .
  9. Нажмите на Replace All и вуаля! это все сделано.
  10. Закройте окно « Find and Replace и нажмите Alt+F9 .

СОВЕТ: Если вы не хотите делать это каждый раз для каждого документа, вы можете создать функцию макроса и поместить ее на ленту. Просто щелчок мышью с тех пор.

Надеюсь, поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .