我目前正在进行一个项目,并寻求一些帮助。为了让大家了解正在发生的事情,我将逐步介绍情况。
1)目前我有一个名为“AnimalNamesToRemove”的字符串数组(例如该数组包含以下单词),其中包含用作书签的单词,我要将其从下面引用的Word表中删除: AnimalNamesToRemove AnimalCat,AnimalDog,AnimalBird
2)除了数组之外,Word文档中存在一个表格,第一列中有动物的名称,以及有关动物的一些信息(唯一重要的信息是动物的名称)。
如果您有任何解决方案和/或建议,请在下面评论。 注意:第一个代码部分适用于创建字符串数组(即从“set wdTable =”到“next i”),我遇到的问题是从单词表中删除信息。 最好, 杰克·亨德森
1)目前我有一个名为“AnimalNamesToRemove”的字符串数组(例如该数组包含以下单词),其中包含用作书签的单词,我要将其从下面引用的Word表中删除: AnimalNamesToRemove AnimalCat,AnimalDog,AnimalBird
2)除了数组之外,Word文档中存在一个表格,第一列中有动物的名称,以及有关动物的一些信息(唯一重要的信息是动物的名称)。
3) 对于这种情况,我有一个Excel表格,希望用它来引用数组中的单词和单词表名称,因为Word文档中已经存在保存在数组中的名称的书签。为了将它们结合起来,存在一个两列Excel电子表格,其中包含书签的名称和实际动物名称(第二列使用命名为“myRangeRef”的范围进行引用):
电子表格
4) 我想要做的是:对于上述数组中的每个值,如果在电子表格表格中找到该值(例如“AnimalDog”),则偏移至其旁边的相应单元格(即第一列中的“Dog”),并创建一个新的逗号分隔字符串与那些值相同,就像“AnimalNamesToRemove”一样(即Cat、Dog、Bird),然后将其转换为名为“AnimalsToDelete”的字符串数组。创建数组后,已根据第二列的引用从第一列中选择了所有值,并制成了数组,我想逐行在单词表中进行操作,对于新数组“AnimalsToDelete”中存在的每个值(即Cat、Dog和Bird),如果该值存在于单词表中(在第一列中找到),则希望代码删除找到名称的整行(请参见下面的结果)
示例结果
Dim wdTable As Object
Dim myRangeRef As Range
Dim AnimalNamesToRemove As Variant
Dim AnimalsToDelete As Variant
Dim wdDoc As Object
Set myRangeRef = ThisWorkbook.Sheets("Bookmark References").Range("B1:B6")
Set wdTable = wdDoc.Tables(1)
For i = LBound(AnimalNamesToRemove) To UBound(AnimalNamesToRemove)
For Each cell In myRangeRef
If InStr(1, cell.Value, AnimalNamesToRemove(i), vbTextCompare) Then
aCell = cell.Offset(, -1).Value
stTemp = stTemp & "," & aCell
End If
Next cell
Next i
stTemp = Mid(stTemp, 2)
If Not Len(Trim(stTemp)) = 0 Then
AnimalsToDelete = Split(stTemp, ",")
For i = LBound(AnimalsToDelete) To UBound(AnimalsToDelete)
For j = wdTable.Rows.Count To 2 Step -1
If wdTable.cell(j, 1).Range.Text = AnimalsToDelete(i) Then wdTable.Rows(j).Delete
Next j
Next i
End If
如果您有任何解决方案和/或建议,请在下面评论。 注意:第一个代码部分适用于创建字符串数组(即从“set wdTable =”到“next i”),我遇到的问题是从单词表中删除信息。 最好, 杰克·亨德森