我目前正在開發一個項目並正在尋找一些幫助。爲了讓大家瞭解正在發生的事情,我將一步一步地通過場景。使用Excel VBA從Word表格的單元格中刪除內容
1)目前我有一個名爲「AnimalNamesToRemove」的字符串數組(這個例子中的數組包含下面的單詞),它包含在單詞文檔中用作書籤的單詞,我希望刪除單詞下面的表中引用:
AnimalNamesToRemove
AnimalCat,AnimalDog,AnimalBird
2)除了陣列,字文檔中的表中存在一列中具有動物的名稱,以及一些信息a布特的動物(即重要的唯一信息是動物的名字):
Word表格
3)對於這種情況,我有我的Excel表格希望用於引用數組中的單詞和單詞表名稱,因爲正在使用的單詞文檔中已有書籤,用於保存數組中存在的名稱。爲了把這些結合在一起,兩列excel表格存在具有書籤和實際的動物名稱的名稱(列二是使用名爲「myRangeRef」的範圍內引用):
電子表格
4)我想要做的是,對於上面列出的數組中的每個值,如果在電子表格中找到該值(例如「AnimalDog」)(即第2列「書籤參考」),則偏移到在第一列中它旁邊的相應單元格(即「Dog」)並創建一個新的以逗號分隔的字符串,這些值相同作爲「AnimalNamesToRemove」(即,貓,狗,鳥),然後將它變成一個名爲「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
如果您有任何解決方案和/或建議,請在下面評論它們。
注:的第一部分代碼適用於創建字符串數組(即從「設置wdTable =」到「下一個我」),它從我有問題的字表中去除的信息用。 最佳,
傑克·亨德森
你能包括輸出應該是什麼樣子的圖片?這似乎很有趣,也是可行的。 – Vityata
是的,給我一分鐘更新@Vityata –
當你的所有關鍵字是通用的或只是「x」 – dwirony