Как сделать так, чтобы гиперссылки правильно отображались в MS Word для файлов, созданных в других текстовых процессорах?

1131
surfmadpig

В моей работе мне часто присылают статьи, созданные в различных текстовых процессорах, которые я открываю и редактирую в 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

0
Не могли бы вы опубликовать небольшой пример дела № 2? harrymc 8 лет назад 0
К счастью, но не уверен, что показывать здесь - если это фактические гиперссылки не в другом формате, то вы идете: http://postimg.org/image/rh7gm4k3f/ (всплывающее окно появляется при наведении курсора на Дополнительные приключения в Финансах и уголовных преступлениях). , где находится гиперссылка). surfmadpig 8 лет назад 0
Я просил фактический файл примера, который я мог изучить. Возможно два из них: docx для случая # 1 и rtf для случая # 2. Нет смысла давать большие файлы. harrymc 8 лет назад 0
@bibadia: Выглядит как отличная идея, но, к сожалению, она не работает. Я также попытался возиться с вариантами ... все еще ничего. Как будто формат неформатированных гиперссылок является частью встроенного стиля, но автоформат не переопределяет его. Я попытался сначала конвертировать в .docx, затем автоформатировать и автоформатировать без конвертации. Неудачно. surfmadpig 8 лет назад 0
@harrymc: только что отредактировал пост с коротким примером. surfmadpig 8 лет назад 0
В случае 2 нет ничего. ejbytes 8 лет назад 0
Кстати, для всех, кто интересуется этим вопросом, проблема с примером файла .docx, который я экспортировал со страниц Mac (v. 5.6.2), заключается в том, что стиль отображаемого текста называется «Hyperlink.0», а не «Hyperlink». Не могу сказать, является ли это той же проблемой, с которой столкнулся OP, или единственной проблемой экспорта страниц. 8 лет назад 0

3 ответа на вопрос

1
harrymc

Я изучил файл примера и думаю, что понял корень проблемы: формат 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 

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

Спасибо, этот макрос работал отлично для случая № 2, но, что интересно, совсем не для № 1 - документов, созданных в Pages. Кроме того - возможно ли изменить его с помощью команд, чтобы изменить шрифт по умолчанию и размер шрифта тоже? surfmadpig 8 лет назад 0
С помощью oHyperlink.Range можно делать все, что угодно, а не только устанавливать стиль. Случай № 1: вы можете опубликовать пример, но, возможно, сначала [Включить коды полей представления] (http://wordribbon.tips.net/T006080_Tools_to_View_Field_Codes.html), чтобы увидеть, как / если Страницы создавали эти поля. harrymc 8 лет назад 0
0
Seyyed Sajjad Moosavi

If all the hyperlinks are actually hyperlinks (not just text), then

Fret no more my friend

10 easy steps await you.

Try this:

  1. Press Alt+F9 in the document you want to see the change in (this will transform and reveal all the hyperlinks, nothing to worry about).
  2. Press Ctrl+H to open Find and Replace.
  3. Type ^d hyperlink in the Find box.
  4. Move the cursor and select the Replace with box, but don't type anything.
  5. Click on the More button below the Replace with field.
  6. Click on the Format button below the other options which you just revealed.
  7. Click on Style.
  8. Select Hyperlink from the list (press H on your keyboard to find it more easily) and click on OK.
  9. Click on Replace All and voila! 'tis all done.
  10. Close the Find and Replace window and press Alt+F9.

TIP: If you don't want to do this every time for every document, you can create a Macro function and place it on the Ribbon. Just a mouse click from then on.

Hope it helps.

Спасибо, Сейед. Это звучит как что-то, что должно работать, но это не так, и я думаю, что знаю почему: во всплывающем окне «Стиль поиска» описание гиперссылки в «плохом» документе говорит «Цвет шрифта: гиперссылка» в то же время в созданном мной обычном документе написано «Цвет шрифта: синий». Итак, как я и подозревал, речь идет о информации о стиле, содержащейся в этих конкретных файлах. Есть идеи? surfmadpig 8 лет назад 0
0

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

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

  • убедитесь, что Word распознал ее как гиперссылку (в этом случае вы должны увидеть код поля, если используете 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