[英]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如何搜索整個文檔,我本來想做的就是
碼:
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.