我创建了一个超链接样式,将文本变为蓝色和粗体。
我想将样式应用到文档中的超链接。
当我运行宏时,输出是“未找到超链接。”
Dim objDoc As Document
Dim objFld As Field
Set objDoc = ActiveDocument
If Selection.Fields.Count >= 1 Then
For Each objFld In objDoc.Fields
If objFld.Type = wdFieldRef Then
objFld.ShowCodes = True
objFld.Select
Selection.Collapse wdCollapseStart
Selection.MoveStartUntil "R"
Selection.Fields(1).Code.Text = Selection.Fields(1).Code.Text & "\*CharFormat"
Selection.Style = ActiveDocument.Styles("HyperlinkStyle")
objFld.Update
objFld.ShowCodes = True
End If
Next objFld
Else
MsgBox "No hyperlinks found.", vbInformation, "Select OK"
End If
End Sub
尽管您的交叉引用链接到文档的其他部分,但它们的处理方式与实际的超链接不同。如果它们是默认的超链接,则将应用 FollowedHyperlink 样式。
您看到该消息,其措辞具有误导性,不是因为文档中没有超链接,而是因为当前所选文本中没有字段。您可以通过查看整个文档而不仅仅是选定的文本来避免这种情况。
就我个人而言,我会将“HyperlinkStyle”重命名为“交叉引用文本”,以使样式的目的清晰,除非您希望所有超链接都采用这种方式格式,在这种情况下,只需修改超链接样式并使用它即可。
您还可以直接使用
objFld
: 来避免更改选择
子格式交叉引用() Dim objDoc 作为文档 调暗 objFld 作为字段
Set objDoc = ActiveDocument
If objDoc.Fields.Count >= 1 Then
For Each objFld In objDoc.Fields
With objFld
If .Type = wdFieldRef Then
If Not Right(.Code.Text, 13) = "\*CharFormat " Then .Code.Text = .Code.Text & "\*CharFormat "
.Code.Characters.First.Style = objDoc.Styles("Cross Reference Text")
.Result.Style = objDoc.Styles("Cross Reference Text")
End If
End With
Next objFld
Else
MsgBox "No cross references found.", vbInformation, "Select OK"
End If
结束子