控制交叉引用的格式(Microsoft Word)
Stephen询问是否可以控制Word插入的交叉引用的格式。当他插入标签和数字(例如表1或图12)时,他想要标签的小写字母(表格,图)以及标签和数字之间的不间断空格。
在Word中无法控制这种类型的交叉引用格式。显然,您可以在放置交叉引用后手动更改它们,但是每当您更新字段时,原始的Word选择格式都将用于它们。您可以尝试几种基于宏的解决方案。第一个解决方案将更改用于该字段的实际字段代码:
Sub FieldRefChanges1() On Error Resume Next Dim oStoryRng As Range Dim oFld As Field For Each oStoryRng In ActiveDocument.StoryRanges For Each oFld In oStoryRng.Fields If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then 'add format switch with lowercase option to field codes oFld.Code.Text = oFld.Code.Text & "\* lower " 'updates the field results to display the new format oFld.Update End If Next oFld Next oStoryRng End Sub
该宏包括几个嵌套的For循环。第一个遍历文档中的每个故事,第二个遍历每个故事中的每个字段。然后使用If语句来确保该字段是REF字段(用于交叉引用的类型),并且该字段的结果是两个或更少的单词(如表1或图12所示)。
如果满足这些条件,则宏将更改实际的域代码,并添加导致该域以小写形式显示的开关。
此宏有两个缺点。首先,如果您多次运行它,则\ *下部开关将多次添加到REF字段中。其次,宏不会将字段结果中的空间更改为不间断的空间。
要克服这两个问题,只需修改宏,使其自动执行更改宏结果所要执行的手动过程。
Sub FieldRefChanges2() On Error Resume Next Dim oStoryRng As Range Dim oFld As Field Dim sTemp As String Dim J As String For Each oStoryRng In ActiveDocument.StoryRanges For Each oFld In oStoryRng.Fields If oFld.Type = wdFieldRef And oFld.Result.Words.Count <= 2 Then sTemp = oFld.Result.Text sTemp = LCase(sTemp) J = InStr(sTemp, " ") sTemp = Left(sTemp, J - 1) & Chr(160) & _ Mid(sTemp, J + 1, Len(sTemp) - J) oFld.Result.Text = sTemp End If Next oFld Next oStoryRng End Sub
该宏与上一个宏基本相同,不同之处在于它严格与该字段的结果文本一起使用。文本被分配给sTemp变量,然后将其转换为小写字母。确定空间的位置,并将其替换为不间断的空间。然后将结果填充回该字段的结果文本中。
注意:
如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。
_WordTips_是您进行经济有效的Microsoft Word培训的来源。
(Microsoft Word是世界上最流行的文字处理软件。)此技巧(8479)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。您可以找到此技巧的一个版本Word的旧菜单界面在这里: