簡體   English   中英

在Word文檔的全部內容上使用VBA Regex

[英]Using VBA Regex on the entire contents of a word document

首要問題: 如何訪問RTF文件的整個文本

好的,所以我在這里有一個問題,我希望我想要的不是完全瘋狂的,但是事情就這樣了。

我從事汽車工作,每天結束時,我們都會對發現的有損壞的車輛進行RTF編譯,然后將其發送給他人。 我們還必須保留包含這些VIN碼和相應損壞的Excel文件。 我已經在VIN日志部分完成了一些工作,使用VBA以某些方式格式化某些值。 RTF文件類似於以下格式(這些不是真正的VIN,但與它們的正則表達式匹配)

1FTEX8EEG12356789 //Other random Information I do not need
    004121 2
    012051 3
    005091
1FTFW7D78KF123567 //Other Random Information I do not need
    042071
    010341 4
    010341 9
//ETC

這是我的問題:我已經找到了如何打開RTF文件的方法,但是我如何一次訪問所有文檔文本,而不僅是逐段訪問,並且RegExp對象是否有一種捕獲方法?在找到字符串的偏移量?

我嘗試使用RegEx的原因是因為有此標頭,每頁大約占據10個“段落”的空間(這些文檔可以是1頁,有時甚至是10個或更多)。 如果有人可以指出我要以更快的方式完成此任務,我將不勝感激。

一旦我想到了RegEx如何搜索整個文檔,我本來想做的就是

  1. 收集([A-Z0-9] {17})的所有RegExp匹配項
  2. 使用步驟1中的匹配項,通過InStr查找文檔中的位置
  3. 使用步驟2中的值循環遍歷步驟1中的每個匹配項,並索引步驟2中的索引,以形成類似於以下代碼的內容。

碼:

For i=1 To RegMatches.Count 
  start_pos = InStr(WordDocumentText,RegMatches.Item(i))
  For j=start_pos To InStr(WordDocumentText,RegMatches.Item(i+1))
    //Code to gather damages on VIN 'i'
  Next
Next

但是這些似乎……多余,並且只是一種混亂的方式。

我真正需要知道的是如何訪問使用VBA打開的RTF文件中的全部文本,我可以從那里開始,但是如果有人對如何從此處開始有了更好的了解對此,我將不勝感激。

我喜歡在后台使用MSWord將RTF文件讀入Excel。 這是如何訪問RTF文檔的整個文本。

Sub readRTF()
    Dim wrdApp As Word.Application
    Dim wrdDoc As Word.Document
    Dim FileName As String
    Dim strFolder As String
    Dim strInput As String

    strFolder = Application.ActiveWorkbook.Path & "\"
    FileName = "VINreport.rtf"

    'open a Word instance
    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = False

    Set wrdDoc = wrdApp.Documents.Open(strFolder & FileName)

    'Read RTF file text into variable
    strInput = wrdDoc.Range.Text

    'Print All Text into Immediate Window
    Debug.Print strInput

    'Clean Up
    wrdDoc.Close 0
    Set wrdDoc = Nothing

    wrdApp.Quit
    Set wrdApp = Nothing
End Sub

我的示例RTF文件與excel文件位於同一文件夾中,並且是上述示例代碼中的直接剪切和粘貼。

結果:

在此處輸入圖片說明


現在,您可以對strInput中的文本運行所需的任何正則表達式。 如果您需要有關正則表達式部分的幫助,請查看此鏈接以獲取將正則表達式與Excel結合使用的一些有用技巧。

暫無
暫無

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

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