Using VBA to parse text in an MS Word document

喜你入骨 提交于 2019-11-29 22:10:57

问题


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:


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.




回答2:


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



回答3:


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


来源:https://stackoverflow.com/questions/756990/using-vba-to-parse-text-in-an-ms-word-document

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!