borgtamer
asked on
Position text at an absolute position in a Word table using VBA
I have a Word table with 2 columns.The row sizes vary but the column widths are fixed. Each row has several pieces of text in the first column. Each piece is separated by a blank line. Each text piece can be of arbitrary length. There can be any number of text pieces in the first column.
I need to insert text in the next column that lines up vertically with a specific text piece in the first column. Note that the column widths are not equal. The first column width is significantly wider than the second. Also note that not every text piece in the first column will have an associated text piece in the second column.
Below is an image that shows an example
Any help on how to align each piece of text in the second column with the associated text in the first column would be appreciated. Thanks in advance.
I need to insert text in the next column that lines up vertically with a specific text piece in the first column. Note that the column widths are not equal. The first column width is significantly wider than the second. Also note that not every text piece in the first column will have an associated text piece in the second column.
Below is an image that shows an example
Any help on how to align each piece of text in the second column with the associated text in the first column would be appreciated. Thanks in advance.
Divide the table into more rows. You can hide the new borders.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
The problem is that I do not know beforehand how many text pieces there will be in the first column. They are added dynamically at run time.
In addition, there are other columns after the second with only 1 piece of information in them.
In addition, there are other columns after the second with only 1 piece of information in them.
Here is an example HiddenRowBorders.doc
ASKER
Can I use absolute positioning in any way to specify exactly where the text in the second column should go?
So to insert more data, you will need some code to insert a new row at the end of the first apparent row, with a hidden top border, but visible bottom border.
I'll give it a go.
I'll give it a go.
It is very difficult to do absolute positioning. You could put the text in text boxes and float them over the table, or you could add some blank paragraphs or line feeds, or possible use 'Space before' in the paragraph formatting.
I'll do the hidden row code, and see how that suits you.
I'll do the hidden row code, and see how that suits you.
You can increase the size of the array to suit a table with more columns
Sub AddNewDataRow()
Dim tbl As Table
Dim rw As Row
Dim cl As Cell
Dim rw1 As Row
Dim i As Integer
Dim NewData(1) As String
NewData(0) = "Some more text for the first column Some more text for the first column"
NewData(1) = "Some more text for the second column"
Set tbl = ActiveDocument.Tables(1)
For Each rw In tbl.Rows
If rw.Borders(wdBorderTop).LineStyle = wdLineStyleSingle And rw.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle Then
Set rw1 = tbl.Rows.Add(rw)
rw1.Borders(wdBorderTop).LineStyle = wdLineStyleNone
rw1.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
For i = 0 To UBound(NewData)
rw1.Cells(i + 1).Range.Text = NewData(i)
Next i
End If
Next rw
End Sub
ASKER