2

我有许多需要编辑的带有 11 个列的 MS Word 表格。

每个文档将包含 1 个表格。

我想将表格从 11 列编辑到 6 列。

VBA 执行以下任务:

  1. 将 col 2 标题从 Time 重命名为 Item
  2. 将 col 3 标题从 Time Zone 重命名为 Comment
  3. 将第 5 列标题从 Type 重命名为 E 或 A

  4. 删除第 2、3 和 5 列中的所有文本(不是重命名的标题)

  5. 删除第 6、7、9、10、11 列

我已经按照我认为最有效的方式列出了编辑表格的顺序,但这并不重要。

我不知道是否可以在不删除标题的情况下删除第 2、3、5 列中的文本。

最后,我想我可以在第 2、3、5 列中输入我想要的新标题,如果这些标题在这些列中的文本被删除时被删除。

谢谢你的帮助。

4

1 回答 1

0

希望这可以帮助,

Option Explicit

Private Sub myTableMacro()
    Dim tmpTable As Word.Table, tmpRange As Word.Range
    With ActiveDocument
        If .Tables.Count > 0 Then
            For Each tmpTable In .Tables
                    'Rename col 2 heading from Time to Item
                tmpTable.Cell(1, 2).Range.Text = "Item"
                    'Rename col 3 heading from Time Zone to Comment
                tmpTable.Cell(1, 3).Range.Text = "Comment"
                    'Rename col 5 heading from Type to E or A
                tmpTable.Cell(1, 5).Range.Text = "E or A"
                    'Delete all text in cols 2, 3 (but not the headers)
                Set tmpRange = .Range(tmpTable.Cell(2, 2).Range.Start, tmpTable.Cell(tmpTable.Rows.Count, 3).Range.End)
                tmpRange.Select
                Selection.Delete Unit:=wdCharacter, Count:=1
                    'Delete all text in cols 5 (but not the headers)
                Set tmpRange = .Range(tmpTable.Cell(2, 5).Range.Start, tmpTable.Cell(tmpTable.Rows.Count, 5).Range.End)
                tmpRange.Select
                Selection.Delete Unit:=wdCharacter, Count:=1
                    'Delete cols 10, 11
                Set tmpRange = .Range(tmpTable.Cell(1, 9).Range.Start, tmpTable.Cell(1, 11).Range.End)
                tmpRange.Select
                Selection.Cells.Delete wdDeleteCellsEntireColumn
                    'Delete cols 6, 7, 9
                Set tmpRange = .Range(tmpTable.Cell(1, 6).Range.Start, tmpTable.Cell(1, 7).Range.End)
                tmpRange.Select
                Selection.Cells.Delete wdDeleteCellsEntireColumn
            Next 'tmpTable
        End If
    End With
    Set tmpRange = Nothing
    Set tmpTable = Nothing
End Sub

我测试过,发现OK。

于 2014-08-24T16:57:14.783 回答