我试图制作一个宏,以根据级别(表中的新行中的每个链接)添加具有不同样式的超链接。
hyperlinktext1(子样式1)(即粗体和16号)
1.1超链接文本2(子样式2)(即尺寸14)
我已经确保样式存在并且可以用于普通文本,但是我无法将样式应用于通过VBA添加的超链接。
更改样式适用于由于某些原因手动添加的超链接。
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
"file.pdf", SubAddress:="", ScreenTip:="", TextToDisplay:="text1"
Selection.Style = ActiveDocument.Styles("Sub level1")
'new row
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.InsertRows 1
Selection.Collapse Direction:=wdCollapseStart
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:= _
"file2.pdf", SubAddress:="", ScreenTip:="", TextToDisplay:="text2"
Selection.Style = ActiveDocument.Styles("Sub level2")
有什么建议吗?
答案 0 :(得分:0)
插入超链接时,插入后的选择范围在超链接的末尾。因此,在代码中,当您应用样式时,就是将其应用到超链接末尾的插入点。
要获取超链接的范围,以便可以对其应用样式,可以移动选择范围的开始,或者更好地在插入超链接时捕获超链接。
在第一种情况下,您将添加行
Selection.MoveStart unit:=wdWord, count:=-1
在add语句之后和应用样式的行之前。
一种更好的执行任务的方法如下
Option explicit
Sub test()
InsertHyperlinkWithStyle Selection.Range, "c:\path_to\file", ActiveDocument.Styles("Sub level1")
End Sub
Sub InsertHyperlinkWithStyle(this_range As Word.Range, this_file_path As String, this_style As Word.Style)
Dim my_hyperlink As Hyperlink
Set my_hyperlink = ActiveDocument.Hyperlinks.Add( _
Anchor:=this_range.Duplicate, _
Address:=this_file_path, _
TextToDisplay:="text1")
my_hyperlink.Range.Style = this_style
End Sub