• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 312
  • Last Modified:

Word VBA: Copy tables from one document to another.

The code below does copy the tables to a new document, but they end up as nested tables.  In the original document, there are 3 paragraphs between the two tables.  How can I unselect the first table after I post it in the new document, add a paragraph after the table, and then paste the second table?

Sub ExtractTablesFromOneDoc()
  Dim objTable As Table
  Dim objDoc As Document
  Dim objNewDoc As Document
  Dim objRange As Range
  Dim o As Paragraph
 
  Set objDoc = ActiveDocument
  Set objNewDoc = Documents.Add
 
  For Each objTable In objDoc.Tables
    objTable.Range.Select
    Debug.Print objTable.Title
    Selection.Copy
 
    '  Paste tables to new document in rich text format.
    Set objRange = objNewDoc.Range
    objRange.Collapse Direction:=wdCollapseEnd
    objRange.PasteSpecial DataType:=wdPasteRTF
    objRange.Collapse Direction:=wdCollapseEnd
  Next objTable
 
End Sub

Open in new window

0
rrhandle8
Asked:
rrhandle8
  • 4
  • 3
1 Solution
 
NorieVBA ExpertCommented:
Add     objRange.InsertParagraphAfter before the Next.
 
  For Each objTable In objDoc.Tables
    objTable.Range.Select
    Debug.Print objTable.Title
    Selection.Copy
 
    '  Paste tables to new document in rich text format.
    Set objRange = objNewDoc.Range
    objRange.Collapse Direction:=wdCollapseEnd
    objRange.PasteSpecial DataType:=wdPasteRTF
    objRange.Collapse Direction:=wdCollapseEnd

    objRange.InsertParagraphAfter

  Next objTable

Open in new window

0
 
rrhandle8Author Commented:
Norie, that did not work.
0
 
NorieVBA ExpertCommented:
It definitely works for me, how exactly are the tables in the original document arranged?

Could you attach a sample document?
0
Cloud Class® Course: Microsoft Windows 7 Basic

This introductory course to Windows 7 environment will teach you about working with the Windows operating system. You will learn about basic functions including start menu; the desktop; managing files, folders, and libraries.

 
rrhandle8Author Commented:
Table1.docx has the two tables
Table_Controller.docm has the code.
Table1.docx
Table_Controller.docm
0
 
NorieVBA ExpertCommented:
What I suggested does seem to be pasting the table separately to the new document but it appears to be placing them on top of each other.

I've tried a few things but the only way I've managed to separate the tables in the new document is to insert a page break between them, which I don' think is ideal.

How do you want the copied tables to appear in the new document?
0
 
rrhandle8Author Commented:
With a paragraph between them.
0
 
Rgonzo1971Commented:
Hi,

pls try
Sub ExtractTablesFromOneDoc()
  Dim objTable As Table
  Dim objDoc As Document
  Dim objNewDoc As Document
  Dim objRange As Range
  Dim o As Paragraph
 
  Set objDoc = ActiveDocument
  Set objNewDoc = Documents.Add
 
  For Each objTable In objDoc.Tables
    objTable.Range.Select
    Debug.Print objTable.Title
    Selection.Copy
 
    '  Paste tables to new document in rich text format.
    Set objRange = objNewDoc.Range
    objRange.Collapse Direction:=wdCollapseEnd
    objRange.PasteSpecial DataType:=wdPasteRTF
    objRange.Tables(1).Rows.WrapAroundText = False
    objRange.Collapse Direction:=wdCollapseEnd

    objRange.InsertParagraphAfter
  Next objTable
' optional
'  For Each objTable In objNewDoc.Tables
'    objTable.Rows.WrapAroundText = True
'  Next objTable
End Sub

Open in new window

Regards
0
 
rrhandle8Author Commented:
Rgonzo1971, that worked.  One note, the document with the original tables has to be the active document.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now