views:

2163

answers:

3

Hi, I was hoping someone could help with a MS Word Macro.

Basically, I have a MS Word document which lists out several text files and specific pages of interest in each file.

The file format is similar to:

textdocument1.txt              P. 6, 12 - issue1
textdocument2.txt              P. 5 - issue1
                               P. 13, 17 - issue3
textdocument3.txt              P. 10

I want to read each line into my Macro as a string.

Then traverse through it to identify the file name. With the file name, I can then open the file, go to the page number, and copy the data I need.

But I'm stuck at step 1, how do I capture the line into a string in an MS Word Macro?

Any help will be appreciated.

+1  A: 

If your word document lists all the text files like this:

<name>{tab}<page ref>{newline}
<name>{tab}<page ref>{newline}
<name>{tab}<page ref>{newline}

Then all the lines are available in the Paragraphs collection. You can loop through that with a simple For Each loop:

Dim p As Paragraph

For Each p In ActiveDocument.Paragraphs
  Debug.Print p.Range.Text
Next p
Tomalak
A: 

The following code should get you started:

Public Sub ParseLines()
    Dim singleLine As Paragraph
    Dim lineText As String

    For Each singleLine In ActiveDocument.Paragraphs
        lineText = singleLine.Range.Text

        '// parse the text here...

    Next singleLine
End Sub

I found the basic algorithm in this article.

e.James
This will break the document up into paragraphs.If you want sentences do this per line (i.e. sentence) check my answer below.
Anonymous Type
+1  A: 

per line

Public Sub ParseDoc()

    Dim doc As Document
    Set doc = ActiveDocument
    Dim paras As Paragraphs
    Set paras = doc.Paragraphs
    Dim para As Paragraph
    Dim sents As Sentences
    Dim sent As Range
    For Each para In paras

        Set sents = para.Range.Sentences
        For Each sent In sents
            Debug.Print sent.Text
        Next

    Next

End Sub
Anonymous Type