我有一个ListView,它代表word文档中的所有FormFields,如目录。
Function addFields(field As formField)
Set oApp = GetObject(, "Word.Application")
oApp.Visible = True
Set oDoc = oApp.ActiveDocument
Dim dFormField As formField
Dim i As Integer
For i = 1 To oDoc.FormFields().Count
Set dFormField = oDoc.FormFields(i)
If (dFormField Is field) Then
Set Item = NavigatorForm.LBFields.ListItems.Add(i, , i)
Set Item.tag = dFormField
Exit For
End If
Next
End Function
如何比较FormField I添加是否在对象模型中的某个索引处,并将其插入列表中的正确位置?
If (dFormField Is field) Then
您是如何比较vba中的对象引用相等性的,但看起来DOM每次都在创建一个新的formfield对象。所以要么我犯了错误,要么我需要一些其他方法来确定它们是否是相同的形式片段。
我会使用自动生成的书签文字,但由于复制和粘贴不能使用空文本或重复项,因此不会更新书签名称。
答案 0 :(得分:0)
这是我的hacky解决方案。我会给出一个更好的解决方案。
Function addFields(field As formField)
Dim orig As String
Dim detect As String
orig = field.Result
field.Result = Rnd(100000)
Set oApp = GetObject(, "Word.Application")
oApp.Visible = True
Set oDoc = oApp.ActiveDocument
Dim dFormField As formField
Dim i As Integer
For i = 1 To oDoc.FormFields().Count
Set dFormField = oDoc.FormFields(i)
If (dFormField.Result = field.Result) Then
field.Result = orig
Set Item = NavigatorForm.LBFields.ListItems.Add(i, , i)
Set Item.tag = dFormField
Exit For
End If
Next
End Function