Sub Move_Txtbox_To_Table() ' ' by Örjan Skoglösa ' This macro moves the text from text boxes ' and place them in a dummy table ' Dim i Dim myText, myTable ActiveWindow.View.ShowHiddenText = True 'just in case it is not checked For i = 1 To ActiveDocument.Shapes.Count 'cycle through the documents shapes (textboxes are shapes) With ActiveDocument.Shapes(i) If .TextFrame.HasText Then 'if the shape is a textbox Set myText = .TextFrame.TextRange.FormattedText 'get the textbox content .Anchor.Paragraphs(1).Range.Select 'find a place to put the table Selection.Collapse Direction:=wdCollapseEnd While Selection.Information(wdWithInTable) 'if textboxes has same anchor position Selection.Tables(1).Select Selection.Collapse Direction:=wdCollapseEnd Selection.Paragraphs.Add 'this one you have to find later and remove Selection.Collapse Direction:=wdCollapseEnd 'otherwise the tables are merged Wend Set myTable = ActiveDocument.Tables.Add(Selection.Range, 2, 1) 'make the table With myTable 'fill the table .Cell(1, 1).Range.InsertAfter "Textbox " & i .Cell(1, 1).Range.Font.DoubleStrikeThrough = True .Cell(1, 1).Range.Font.Hidden = True .Cell(2, 1).Select Selection.FormattedText = myText 'inserts the textbox content, couldn´t find any better way End With .TextFrame.TextRange.Text = "" 'empty the textbox, has to be done AFTER inserting in table End If End With Next ActiveDocument.Range(Start:=0, End:=0).Select 'go to the beginning End Sub Sub Move_Table_To_Txtbox() ' ' by Örjan Skoglösa ' This macro moves the text previously moved from text boxes ' and place them back in their text boxes ' Dim j As Integer Dim myTable, firstCell, secondCell ActiveWindow.View.ShowHiddenText = True 'just in case it is not checked For Each myTable In ActiveDocument.Tables 'cycle through the documents tables Set firstCell = myTable.Cell(1, 1).Range firstCell.MoveEnd Unit:=wdCharacter, Count:=-1 If (Left(firstCell.Text, 8) = "Textbox ") And (firstCell.Font.DoubleStrikeThrough) Then 'If This Table was inserted by the other macro Set secondCell = myTable.Cell(2, 1).Range.FormattedText 'get the content secondCell.MoveEnd Unit:=wdCharacter, Count:=-1 'without the cell mark j = Mid(firstCell.Text, 9) 'get the inserted textbox number ActiveDocument.Shapes(Val(j)).TextFrame.TextRange.Select Selection.FormattedText = secondCell 'insert the content myTable.Delete End If Next ActiveDocument.Range(Start:=0, End:=0).Select 'go to the beginning End Sub