【问题标题】:Update Word 2013 SEQ fields更新 Word 2013 SEQ 字段
【发布时间】:2016-04-12 20:29:19
【问题描述】:

我正在编写一个 VBA 宏来仅更新 Word 2013 文档中的 SEQ 字段。我将它设计为使用 GoTo 从文档的开头到结尾一次访问每个 SEQ 字段(不更新全部),以确保我跳过其他字段类型。我正在努力让它为每个 SEQ 字段循环,直到到达文档的末尾。我希望它适用于任何文档,无论书签或其他结束标记如何。

这是我到目前为止的代码(使用 cmets):

ActiveWindow.View.FieldShading = wdFieldShadingAlways '转到文档顶部 Selection.HomeKey 单位:=wdStory '转到第一个 SEQ 字段

Selection.GoTo What:=wdGoToField, Which:=wdGoToNext, Count:=1, Name:="SEQ"

' Selection.Find.ClearFormatting

'只要域码多,更新这一项,转到下一项 Do While Selection.GoToNext.wdGoToField = True 选择.字段.更新 循环

【问题讨论】:

    标签: field seq word-2013


    【解决方案1】:

    有点晚了,但是当我在寻找相同的答案时,你的问题出现了。 :-)

    为了灵活性,实际工作是作为函数完成的,其中域代码作为字符串接收。这样我就可以使用任何所需的域代码调用该函数,而不必是特定的 SEQ 或任何域代码。

    Function UpdateSpecificFields(MyFieldCode As String)
    
    Dim MyField As Field
    
        For Each MyField In ActiveDocument.Fields
    
    '        Debug.Print """" & MyField.Code & """" & MyField.Result
    
            If InStr(1, MyField.Code, MyFieldCode) <> 0 Then
                MyField.Update
            End If
    
        Next MyField
    
    End Function
    

    我们正在遍历活动文档中的所有字段。你可以加入测试MyField.Type = wdFieldSequence是否可以减少不必要的工作。

    InStr 在奇数间距的情况下存在;有时字段创建者可能会在代码本身之前或之后包含一个额外的空格,所以我不想太字面意思。 (我想应该有一个 trim() 来摆脱上述空间,但我有点懒了。)

    用法:从sub调用函数。

    Sub UpdateSEQQs()
        UpdateSpecificFields ("SEQ Qs")
    End Sub
    

    我有一个名为Qs 的SEQ,所以你可以在上面看到它是如何被调用的。希望这对某人有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多