在word中用vba插入交叉引用,可以使用Range对象或Selection对象的IInsertCrossReference方法。
它的语法如下:
Sub InsertCrossReference(ReferenceType, ReferenceKind As WdReferenceKind, ReferenceItem, [InsertAsHyperlink], [IncludePosition], [SeparateNumbers], [SeparatorString])
其中各个参数的说明如下:
Name | Required/Optional | Data type | Description |
---|---|---|---|
ReferenceType | Required | Variant | The type of item for which a cross-reference is to be inserted. Can be anyWdReferenceType or WdCaptionLabelID constant or a user defined caption label. |
ReferenceKind | Required | WdReferenceKind | The information to be included in the cross-reference. |
ReferenceItem | Required | Variant | If ReferenceType is wdRefTypeBookmark , this argument specifies a bookmark name. For all other ReferenceType values, this argument specifies the item number or name in the Reference type box in the Cross-reference dialog box. Use the GetCrossReferenceItemsmethod to return a list of item names that can be used with this argument. |
InsertAsHyperlink | Optional | Variant | True to insert the cross-reference as a hyperlink. |
IncludePosition | Optional | Variant | True to insert “above” or “below,” depending on the location of the reference item in relation to the cross-reference. |
SeparateNumbers | Optional | Variant | True to use a separator to separate the numbers from the associated text. (Use only if the ReferenceType parameter is set to wdRefTypeNumberedItem and the ReferenceKind parameter is set to wdNumberFullContext.) |
SeparatorString | Optional | Variant | Specifies the string to use as a separator if the SeparateNumbers parameter is set to True. |
以下vba代码举例演示在word文档的开头插入一个交叉引用,该交叉引用引用的是第一个自定义题注标签”表”。
Sub QQ1722187970() Dim oRng As Range Dim oDoc As Document Set oDoc = Word.ActiveDocument Set oRng = oDoc.Range(0, 0) With oRng .InsertCrossReference "表", wdOnlyLabelAndNumber, 1 End With End Sub
如果想要获取某个类型的所有可用的交叉引用,可以使用Document对象的GetCrossReferenceItems方法。
如下所示:
Sub QQ1722187970() Dim oRng As Range Dim oDoc As Document Set oDoc = Word.ActiveDocument Set oRng = oDoc.Range(0, 0) With oRng '获取所有可用的交叉引用项 arrItems = oDoc.GetCrossReferenceItems("表") '插入最后一个交叉引用项 .InsertCrossReference "表", wdOnlyLabelAndNumber, UBound(arrItems) End With End Sub
发表评论