ハイパーリンクは、ハイパーリンクを使用する前に色とフォントを変更するために使用されています。ハイパーリンクの範囲の一部を選択できません
しかし、一度ハイパーリンクに追加すると色がなくなり、実際にはハイパーリンク範囲の一部を選択できません。documents.Range(start, end);
はその一部ではなくすべての範囲を返します。
ハイパーリンクは、ハイパーリンクを使用する前に色とフォントを変更するために使用されています。ハイパーリンクの範囲の一部を選択できません
しかし、一度ハイパーリンクに追加すると色がなくなり、実際にはハイパーリンク範囲の一部を選択できません。documents.Range(start, end);
はその一部ではなくすべての範囲を返します。
ハイパーリンクの部分の書式設定が可能です。しかし、それは簡単ではありません。ハイパーリンクは、ワードフィールドとして実現されます。つまり、フィールドコードと表示値で構成されます(実際には、フィールドの特殊な種類です。表示テキストなどの関連情報はすべてフィールドコードに格納されません) 。
フィールドコードを表示するには、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
問題は、ハイパーリンクがテキストからオブジェクトモデルオブジェクト、「ハイパーリンク」オブジェクトに変更されることです。このオブジェクトにはハイパーリンクスタイルがあり、ハイパーリンクオブジェクトに変更した後に表示されます。
ハイパーリンクを別の表現で表示する場合は、ハイパーリンクスタイルを変更できます。
はこの絵http://prntscr.com/cns076私が好きハイパーリンクのスタイルを作るために、とにかくそこにありますテキストを複数の色に分割したい –