【问题标题】:Inserting/modifying text within cross reference field codes在交叉引用域代码中插入/修改文本
【发布时间】:2020-02-29 13:19:44
【问题描述】:

我在 Word 中构建了一个自定义交叉引用工具,允许用户选择多个连续的项目同时交叉引用。例如,按住 Shift 按钮并选择图 1 到图 5 当前会在我的文档中插入“图 1 - 5”,这两个数字都与它们各自的数字相关联,作为可更新的域代码。域代码切换如下所示:

{ REF _Ref2236712 \h \* \Charformat } - { REF _Ref2236713 \h \# 0}

该字段通过 VBA 插入到文档中。下面是如何插入第一个字段的示例:

Selection.InsertCrossReference ReferenceType:=ReferenceType.Value, _
referencekind:=wdOnlyLabelAndNumber, referenceitem:=i, insertashyperlink:=HyperlinkChoice

...

Set fld1 = rng1.Fields(1)
fld1.Code.Text = fld1.Code.Text & "\* Charformat "
fld1.Update

如何修改域代码 VBA 以使文档中的最终结果显示为“图 1 - 5”而不是“图 1 - 5”?我尝试在括号内的各个位置添加诸如“s”和“s”之类的字符串,但没有成功。

更进一步,是否可以将“附录 A - 附录 C”更改为“附录 A - C”?这是一个更大的挑战,因为它不涉及简单地添加一个字母来实现复数。此外,之前的数字格式切换 (\# 0) 不适用于字母字符(意味着附录 C 不会被缩减为仅说 C)。

【问题讨论】:

  • “图”文本是您正在交叉引用的项目的标签。您无法修改此标签而不影响使用该标签的所有其他项目。解决您的问题的方法是将第一个交叉引用减少为仅数字并自己插入数字文本作为宏的一部分。
  • 感谢@Freeflow,看来解决方案比我想象的要容易。我已编辑宏以将“数字”作为纯文本插入,并使字段仅显示数字。对于任何其他读者,字段代码文本设置为 fld1.Code.Text = fld1.Code.Text & " \# 0 \* Charformat " 以使其仅显示数字。

标签: vba ms-word


【解决方案1】:

您需要修改宏以使其输出: 数字 { REF _Ref2236712 \h # 0} - { REF _Ref2236713 \h # 0}

【讨论】:

  • 来吧,这并不是 OP 以前不知道的和/或 @Freeflow 没有说的。
猜你喜欢
  • 2018-02-23
  • 1970-01-01
  • 1970-01-01
  • 2014-12-13
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 2014-02-28
相关资源
最近更新 更多