在不创建查找/哈希表的情况下查找内置/用户定义样式的索引号



下面的VBA Word列表允许我转储用户定义样式的内容"附录9";。有1-9个级别基于Header 1-9内置样式。

尽管我可以知道我的用户定义风格的名称或猜测索引号(即使它是排序字母列表中的第一个(来获得信息,但没有对象方法可以返回基于传递起始级别1的用户定义名称"而分配的索引号;附录1";然后我可以循环通过从这个返回的索引号到级别9的循环;"查找/替换";处理与此用户定义样式列表相关的信息。

我能想到的唯一方法是读入ActiveDocument中所有可见/不可见的当前样式,并根据指定的索引号构建一个所有样式名称的列表。然后查找/散列这个样式表,以查找用户定义样式的级别1索引号。我想对其进行查找/替换处理,并使用.item(index(方法。

字体列表也存在同样的问题,它无法在不创建查找/哈希表的情况下通过方法获得分配给用户定义字体的索引号。

此外,通过能够检索每个用户定义样式的起始索引号,它将是一个短列表,并存储在一个数组中。因此,下面列出的代码可以概括为一个函数/子例程,其中只有一个代码副本,并且每个起始索引号都可以插入到这个公共代码中。起始索引号可以插入for循环,循环通过所有9个级别来转储用户定义的样式信息。

有更简单的方法吗?

Debug.Print "//==========================================="
Debug.Print "Base style= " _
& ActiveDocument.Styles("Appendix 9").Basestyle & vbCr _
& "Style name= " & ActiveDocument.Styles("Appendix 9").NameLocal & vbCr _
& "Style name(index=1)= " & ActiveDocument.Styles(index:=1).NameLocal & vbCr _
& "Style name(index=2)= " & ActiveDocument.Styles(index:=2).NameLocal & vbCr _
& "Style name(index=3)= " & ActiveDocument.Styles(index:=3).NameLocal & vbCr _
& "Style name(index=11)= " & ActiveDocument.Styles(index:=11).NameLocal & vbCr _
& "Style Linked= " & ActiveDocument.Styles("Appendix 9").Linked & vbCr _
& "Style LinkedStyle= " & ActiveDocument.Styles("Appendix 9").LinkStyle & vbCr _
& "Next para style= " & ActiveDocument.Styles("Appendix 9").NextParagraphStyle & vbCr _
& "Style Parent= " & ActiveDocument.Styles("Appendix 9").Parent & vbCr _
& "Style Type= " & ActiveDocument.Styles("Appendix 9").Type & vbCr _
& "Style Visibility= " & ActiveDocument.Styles("Appendix 9").Visibility & vbCr _
& "Style ListLevel= " & ActiveDocument.Styles("Appendix 9").ListLevelNumber & vbCr _
& "Style InUse= " & ActiveDocument.Styles("Appendix 9").InUse & vbCr _
& "Style AutomaticallyUpdate= " & ActiveDocument.Styles("Appendix 9").AutomaticallyUpdate & vbCr _
& "Style BuiltIn= " & ActiveDocument.Styles("Appendix 9").BuiltIn & vbCr _
& "Style Quick= " & ActiveDocument.Styles("Appendix 9").QuickStyle & vbCr _
& "Style UnHideWhenUsed= " & ActiveDocument.Styles("Appendix 9").UnhideWhenUsed & vbCr _
& "Style Font Name= " & ActiveDocument.Styles("Appendix 9").Font.Name & vbCr _
& "Style Font Size= " & ActiveDocument.Styles("Appendix 9").Font.Size & vbCr _
& "Style Font Bold= " & ActiveDocument.Styles("Appendix 9").Font.Bold & vbCr _
& "Style Font TextColor= " & ActiveDocument.Styles("Appendix 9").Font.TextColor & vbCr _
& "Style Font Italic= " & ActiveDocument.Styles("Appendix 9").Font.Italic & vbCr _
& "Style Para Format Style Align = " & ActiveDocument.Styles("Appendix 9").ParagraphFormat.Alignment & vbCr

' & "Style Shading= " & ActiveDocument.Styles("Appendix 9").Shading & vbCr
' & "Style Table= " & ActiveDocument.Styles("Appendix 9").Table & vbCr _
' & "Style ListTemplate= " & ActiveDocument.Styles("Appendix 9").ListTemplate & vbCr
' & "Style Linked ListTemplate= " & ActiveDocument.Styles("Appendix 9").LinkToListTemplate & vbCr _

当您想要的功能不存在时,您可以找到解决方法,例如

Dim index As Long
For index = 1 To 9
.Style = ActiveDocument.Styles("Appendix " & index)
Next index

最新更新