首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA编辑MS WORD表从11 cols到6 cols

VBA编辑MS WORD表从11 cols到6 cols
EN

Stack Overflow用户
提问于 2012-05-27 17:44:18
回答 1查看 209关注 0票数 2

我有许多MS字表和11科尔,我需要编辑。

每个文档将包含一个表。

我想编辑一张从11所学校到6所中学的表格。

执行下列任务的VBA:

  1. 重命名2标题从时间到项目
  2. 重命名3标题从时区注释
  3. 重命名5标题从类型到E或A
  4. 删除cols 2、3和5(未重命名的标题)
  5. 删除cols 6、7、9、10、11 H 210G 211

我已经列出了编辑表格的顺序,我认为这将是最好的,但这真的不重要。

我不知道在没有删除标题的情况下,cols 2,3,5中的文本是否可以被删除。

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

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2014-08-24 16:57:14

希望这能帮上忙

代码语言:javascript
复制
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

我测试过了,发现没问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10775997

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档