簡體   English   中英

使用 VBA 解析 MS Word 文檔中的文本

[英]Using VBA to parse text in an MS Word document

我希望有人可以幫助使用 MS Word 宏。

基本上,我有一個 MS Word 文檔,其中列出了幾個文本文件和每個文件中感興趣的特定頁面。

文件格式類似於:

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

我想將每一行作為字符串讀入我的宏。

然后遍歷它來識別文件名。 有了文件名,我就可以打開文件,轉到頁碼,然后復制我需要的數據。

但是我被困在第 1 步,如何在 MS Word 宏中將該行捕獲為字符串?

任何幫助將不勝感激。

以下代碼應該可以幫助您入門:

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

我在這篇文章中找到了基本算法。

如果你的 word 文檔列出了所有這樣的文本文件:

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

然后所有的行都在Paragraphs 集合中可用。 你可以用一個簡單的For Each循環來遍歷它:

Dim p As Paragraph

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

每行

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

如果其他文本包含特殊字符或使用另一種語言,則上述代碼將不起作用,這是我在執行的一項任務中提出的解決方案

    Dim para As Paragraph
    Dim sentence() As String
    For Each para In ActiveDocument.Paragraphs
          sentence() = Split(para.Range.Text, Chr(11))
            For i = 0 To UBound(sentence)
                  Msgbox(sentence(i))
            next i
    next

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM