使用变量复制粘贴表

时间:2016-04-23 15:06:12

标签: vba ms-word word-vba word-2007

我想在变量cTable中存储一个表,并在需要时将其粘贴到所有格式中。

Sub copytable()
Dim cTable As TABLE

    Selection.Tables(1).Select

    cTable = Selection.Tables ' how do i assign table into variable

    Selection.MoveDown Unit:=wdLine, Count:=2

    Selection.Paste cTable ' how it going to be paste exacty the copied table

End Sub

示例在表格图片中:

@ken这是没有variable

的复制/粘贴表的简单代码
Selection.Tables(1).Select
Selection.COPY
Selection.MoveDown Unit:=wdLine, Count:=2
Selection.PasteAndFormat (wdPasteDefault)

1 个答案:

答案 0 :(得分:1)

无法将表存储在变量中。可以使用变量来引用表,以便您可以始终引用它。

此代码示例演示了在引用表之前或之后是否插入新表无关紧要。如果它是文档中的第一个表并且它被复制到文档的开头,它仍然可以复制到文档的末尾(或其他任何地方)。

Sub ReuseTableReference()
    Dim doc As word.Document
    Dim tbl As word.Table
    Dim rngTableTarget As word.Range

    Set doc = ActiveDocument
    Set tbl = doc.Tables(1)
    Set rngTableTarget = doc.content

    'Copy the table to the beginning of the document
    rngTableTarget.Collapse wdCollapseStart
    rngTableTarget.FormattedText = tbl.Range.FormattedText

    'Copy the table to the end of the document
    rngTableTarget.Start = doc.content.End
    rngTableTarget.FormattedText = tbl.Range.FormattedText

    'Copy the table to the current selection
    Selection.FormattedText = tbl.Range.FormattedText
End Sub

当然,索引值中的硬编码通常是不可取的。在这种情况下,表格可以加入书签,以便您可以从书签中选择它,而不是:

    Set tbl = doc.Bookmarks("tbl").Range.Tables(1)

(这里,索引值1指的是书签范围内的表格数。)