使用VBA进行Word复制,粘贴和删除列

时间:2019-02-26 12:54:27

标签: vba ms-word

我有一个带有表格的Word文档。 我有一个宏,用于从某些列的单元格中复制值并将其粘贴到其他列中。然后宏将从表中删除几列。

通常,我使用书签进行复制和粘贴。

书签是特定列中除标题之外的所有单元格。 因此,例如“ Objectives”书签将从table5的第2列的row2一直延伸到column2的末尾。因此,如果用户添加一行,则该行也将包含在书签中。

下面是一个示例:

If ActiveDocument.Bookmarks.Exists("ProposedOverallObj") = True Then
ActiveDocument.Bookmarks.Item("ProposedOverallObj").Select

Selection.Cut
Selection.GoTo What:=wdGoToBookmark, Name:="Objectives"
With ActiveDocument.Bookmarks
    .DefaultSorting = wdSortByName
    .ShowHidden = False
End With
Selection.PasteAndFormat (wdPasteDefault)
End If

 Dim Table1 As Table
Set Table1 = ThisDocument.Tables(5)


If Table1.Columns.Count >= 5 Then
    With Table1
        .Columns(5).Delete
        .Columns(4).Delete
        .Columns(3).Delete
    End With
Else
    MsgBox "Not enough columns!"
End If

大约持续13张表。前几个表工作正常,然后我开始遇到一个奇怪的错误,其中我表上方的文本行被随机复制到表标题中,然后我的“删除列”代码中断,并告诉我其中一个列已经被删除。已删除。 (还没有)。

Error Message Object Has Been Deleted

有更好的方法吗?可能是因为我正在使用.Select吗?我知道这可能是粗略的。将ID分配给我的列范围会比使用书签和选择更好吗?如果是这样,您能否为我提供一个小示例代码,以便在表中的某个范围内使用Dim(我的范围始终从row2开始并转到列的末尾)?

0 个答案:

没有答案