2016-04-23 2 views
1

Je veux stocker une table dans la variable cTable et collez-la quand j'en ai besoin avec tout le formatage.Copier la table de collage à l'aide de la variable

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 

L'exemple est dans le tableau d'image:

@ken C'est simple code de la table copier/coller sans variable

Selection.Tables(1).Select 
Selection.COPY 
Selection.MoveDown Unit:=wdLine, Count:=2 
Selection.PasteAndFormat (wdPasteDefault) 
+2

Enregistrez une macro dans laquelle vous sélectionnez la table, copiez-la, déplacez-la vers le nouvel emplacement et collez-la. Ensuite, regardez le code de la macro pour voir comment vous devez le faire vous-même. –

+0

Ceci est pour Word, pourquoi avez-vous inclus la balise Excel? Je vais l'enlever quand j'ai une chance. –

+0

@AndyG Désolé je pense que les gens 'excel' peuvent contribuer à ce problème –

Répondre

0

Il est impossible de stocker une table dans une variable. Il est possible d'utiliser une variable à référence une table, de sorte que vous pouvez toujours y revenir.

Cet exemple de code montre comment les nouvelles tables sont insérées avant ou après la table référencée. S'il s'agit de la première table du document et qu'elle est copiée au début du document, elle peut toujours être copiée à la fin du document (ou ailleurs).

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 

Un codage en dur dans la valeur d'index n'est souvent pas souhaitable, bien sûr. Dans ce cas, la table peut être bookmarked afin que vous puissiez ramasser du signet, à la place:

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

(Ici, la valeur d'index 1 fait référence au nombre de tables dans la plage bookmarked.)