VBA:如何遍历标签(不在用户表单上)?

时间:2015-12-06 06:01:45

标签: vba ms-word controls word-vba

我的Word文档有很多ActiveX标签。 [不是文本框:我原来的标题出错了。]

我想要一个宏来循环它们以对它们中的每一个执行操作(更改标题),但我不知道如何识别它们。

如果他们使用的是用户形式,我会说:  For each aLabel in UserForm1.Controls

但这不适用于我的情况。

1 个答案:

答案 0 :(得分:2)

假设它是你正在使用的文本框,根据标题但不是问题,文档的Shapes集合可能就是你所追求的:

Sub ShapeLoop()

    Dim shp As Shape

    For Each shp In ThisDocument.Shapes
        ' Test if shp is one you're interesed in, perhaps using shp.Name
        Debug.Print shp.Name
        ' Do Stuff
    Next shp

End Sub

编辑:

字段集合

再次相同
Sub FieldLoop()

    Dim fld As Field

    For Each fld In ThisDocument.Fields
        If TypeName(fld.OLEFormat.Object) = "Label" Then
            Debug.Print fld.OLEFormat.Object.Caption
            fld.OLEFormat.Object.Caption = "New Caption"
        End If
    Next

End Sub