2016-09-29 6 views
1

ハイパーリンクは、ハイパーリンクを使用する前に色とフォントを変更するために使用されています。ハイパーリンクの範囲の一部を選択できません

しかし、一度ハイパーリンクに追加すると色がなくなり、実際にはハイパーリンク範囲の一部を選択できません。documents.Range(start, end);はその一部ではなくすべての範囲を返します。

答えて

2

ハイパーリンクの部分の書式設定が可能です。しかし、それは簡単ではありません。ハイパーリンクは、ワードフィールドとして実現されます。つまり、フィールドコードと表示値で構成されます(実際には、フィールドの特殊な種類です。表示テキストなどの関連情報はすべてフィールドコードに格納されません) 。

フィールドコードを表示するには、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

問題は、ハイパーリンクがテキストからオブジェクトモデルオブジェクト、「ハイパーリンク」オブジェクトに変更されることです。このオブジェクトにはハイパーリンクスタイルがあり、ハイパーリンクオブジェクトに変更した後に表示されます。

ハイパーリンクを別の表現で表示する場合は、ハイパーリンクスタイルを変更できます。

+0

はこの絵http://prntscr.com/cns076私が好きハイパーリンクのスタイルを作るために、とにかくそこにありますテキストを複数の色に分割したい –

関連する問題