現在、プロジェクトを進めており、援助を探しています。皆さんに起こっていることのレイアウトを与えるために、私はシナリオを段階的に実行します。ExcelのVBAを使用してWordテーブルのセルから内容を削除する
1) "AnimalNamesToRemove"(この例では次の単語を含む配列)という文字列配列を持っています。これは単語を削除するために探している単語文書のブックマークとして使用されている単語を含んでいます以下の表は参照:アレイに加え
AnimalNamesToRemove
AnimalCat、AnimalDog、AnimalBird
2)、Word文書内のテーブルは、それが1桁目に動物の名前を持つ存在しますいくつかの情報と動物(重要である唯一の情報は、動物の名前です)試合:このシナリオでは
Wordの表
3)、私は私がExcelの表を持っています配列内の単語と単語テーブル名を参照するのに使います。すでに使用されている単語文書にブックマークがあり、配列に存在する名前を保持しています。
スプレッドシート
:一緒にこれらを持って来るために、2枚の列Excelスプレッドシートは、そのブックマークの名前と実際の動物の名前を(列2が「myRangeRef」という名前の範囲を使用して参照される)が存在します4)上記の配列のすべての値について、スプレッドシートテーブル(つまり、列2の「ブックマーク参照」)にその値(「AnimalDog」など)が含まれていれば、最初の列(つまり "Dog")の横にあるそれぞれのセルを選択し、それらの値を持つ新しいカンマ区切り文字列を作成します"AnimalNamesToRemove"(つまり、 Cat、Dog、Bird)を作成し、それを "AnimalsToDelete"という文字列配列に変換します。配列が作成され、すべての値が最初の列で選択され、2列目の参照に基づいて配列に作成されると、単語表の行ごとに、新しい配列に存在するすべての値"AnimalsToDelete"、その値(Cat、Dog、Bird)がワードテーブルに存在する場合(列1にあります)、その名前が見つかった行全体を削除するコードを入力します(下の結果を参照)
例結果
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を設定=」「次のI」に)、私は問題を抱えている単語テーブルからの情報のその除去と。( - 参考文献は、ボックスをチェックするツール)私たちは、Wordのものを用意して、あなたのコードに基づいて ベスト、
もすることができます出力がどのように表示されるべきかの写真を含めますか?それは面白くて実用的だと思われる。 – Vityata
はい、間違いなく、@Vityataを更新するには1分を与えてください –
すべてのキーワードが一般的であるか「x」が – dwirony