![]() |
|
#1
|
|||
|
|||
|
Hello, is there anyone willing to help me with this problem?
I have a text formed by several short lines. Each line start with either one word in italic or two words in italic, non italic words follows. For example: word1 word2 Word3 [rest of text] word4 Word5 [rest of text] word6 Word7 [rest of text] What I need to do is to transform this text in a table where - the first column will always contain the first word - the second column will either contain the second word in italics, if this is present, or will be empty if a second word in italic is not present - the third column will always contain the first word not in italic (which can be the second or the third word on the line I was hoping to do this with a clever combination of find and replace, but I did not succeed. My knowledge of VBA applied to word is next to zero, so I ask for some assistance. One idea I had is to select rows starting with only one word in italics, and apply a particular find and replace condition only on those. In this way I think I can correctly place the special characters that I will be use to part the columns of the table. |
|
#2
|
|||
|
|||
|
If each line is a separate paragraph then select the text to process and:
Code:
Sub ScratchMacro()
'A basic Word macro coded by Greg Maxey
Dim oRng As Word.Range
Dim oTblRng As Word.Range
Dim oTbl As Table
Dim lngIndex As Long
Set oRng = Selection.Range
Set oTblRng = ActiveDocument.Range
oTblRng.Collapse wdCollapseEnd
Set oTbl = ActiveDocument.Tables.Add(oTblRng, oRng.Paragraphs.Count, 3)
For lngIndex = 1 To oRng.Paragraphs.Count
oTbl.Cell(lngIndex, 1).Range.Text = Trim(oRng.Paragraphs(lngIndex).Range.Words(1))
If oRng.Paragraphs(lngIndex).Range.Words(2).Font.Italic = True Then
oTbl.Cell(lngIndex, 2).Range.Text = Trim(oRng.Paragraphs(lngIndex).Range.Words(2))
oTbl.Cell(lngIndex, 3).Range.Text = Trim(oRng.Paragraphs(lngIndex).Range.Words(3))
Else
oTbl.Cell(lngIndex, 3).Range.Text = Trim(oRng.Paragraphs(lngIndex).Range.Words(2))
End If
Next lngIndex
lbl_Exit:
Exit Sub
End Sub
|
|
#3
|
|||
|
|||
|
Hello Greg, thanks for your help.
It works greatly However, I exaggerated a bit with the simplification: ![]() what I called "first word non in italic" is actually a combination of 1-n words going from the first word non in italic to a special character (§) that I can easily add to the original text by find and replace. That's beacause my first idea was to find a way to add "§§" between the first and the second word of each line only when the second word is not in italic. Then I could convert text into table parting columns with §, and get an empty cell when there is not a second word in italic. Also, the table should have: a fourth column whose content can be defined in one of the following ways (they will give the same results, choose the simplest to code) - the word comprised between the previous § and the next § - the first 4 characters after the previous § The rest of the line will be contained, unbroken, in a fifth column Thanks for your suggestions
|
|
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
Format tab leader in “Table of figures” separate from text?
|
WTR_girl12 | Word | 1 | 09-03-2015 10:48 AM |
How to Subtract value in table, based on two different conditions
|
nitemath2 | Excel | 1 | 06-19-2015 01:28 AM |
| Hyperlink Format varies, depending on whether Target file was saved or unsaved on Hyperlink Copy | RichardDavey | Word | 0 | 05-26-2015 05:26 PM |
| Help - Run-time error 91 - VBA for inserting and formatting text depending on style | mtrborges | Word VBA | 2 | 02-08-2015 11:35 PM |
| 3x1 Table: text in fields loses paragraph format when being bulleted | madasco | Word | 3 | 06-07-2013 06:44 AM |