2016-09-29 3 views
1

Гиперссылка в моем плагине содержит 3 цвета на основе некоторых условий, прежде чем использовать гиперссылку, которую я использовал documents.Range(start, end);, чтобы изменить цвет и шрифт.Невозможно выбрать часть диапазона гиперссылок

Но после добавления к гиперссылке цвет ушел, на самом деле я не могу выбрать часть диапазона гиперссылок, documents.Range(start, end); возвращает весь диапазон, не являющийся его частью.

ответ

2

Форматирование частей гиперссылки возможно. Однако это не просто. Гиперссылки реализуются как поля Word, т. Е. Состоят из кода поля и отображаемого значения (на самом деле это поле типа , но не вся соответствующая информация, такая как текст дисплея сохраняется в полевом коде) ,

Вы можете открыть код поля, нажав Alt + F9 (и спрячьте его снова, снова нажав тот же ярлык).

Когда вы устанавливаете форматирование начала и конца диапазона, вам необходимо учитывать, что код поля добавляется к тексту дисплея (хотя по умолчанию вы не увидите код поля при просмотре Range.Text). Например, если ваша гиперссылка начинается со смещения 100, тогда текст на дисплее начнется со смещения 100 + длина кода поля.

В этом примере VBA макросов объясняет, как получить длину кода поля и вычисляет правильное смещение:

Sub FormatHyperlink() 
    ' set up a sample document 
    Dim doc As Document 
    Set doc = Application.Documents.Add 

    Selection.TypeText "This is a hyperlink to the " 
    Selection.Collapse wdCollapseEnd 
    Selection.Hyperlinks.Add Selection.Range, _ 
     "https://stackoverflow.com/", , , "greatest webpage" 
    Selection.TypeText " ever." 

    ' retrieve the hyperlink 
    Dim lnk As Hyperlink 
    Set lnk = ActiveDocument.Hyperlinks(1) 

    ' retrieve the field code of the hyperlink 
    Dim rng As Range 
    Set rng = lnk.Range.Duplicate 
    rng.TextRetrievalMode.IncludeFieldCodes = True 

    Dim fieldCodeLength As Integer 
    fieldCodeLength = Len(rng.Text) 

    rng.TextRetrievalMode.IncludeFieldCodes = False 

    ' format the first word of the display text with a different color 
    rng.Start = rng.Start + fieldCodeLength + 1 
    rng.Collapse 
    rng.MoveEnd wdWord, 1 
    rng.Font.ColorIndex = wdRed 

    ' format the rest of the hyperlink with another color 
    Set rng = lnk.Range.Duplicate 
    rng.Start = rng.Start + fieldCodeLength + 1 
    rng.MoveStart wdWord, 1 
    rng.Font.ColorIndex = wdDarkBlue ' or use rng.Font.TextColor = RGB(x,x,x) 
End Sub 
0

Проблема заключается в том, что гиперссылка изменена из текста в объект объектной модели, объект «Гиперссылка». Этот объект имеет стиль гиперссылки, и это то, что вы видите после его изменения в объект Hyperlink.

Вы можете изменить стиль гиперссылки, если хотите показать гиперссылку в другом представлении.

+0

есть в любом случае, чтобы сделать стиль гиперссылкой как изображения http://prntscr.com/cns076 я хотите разделить текст на несколько цветов –