在单词文档的全部内容上使用VBA Regex

时间:2013-11-11 20:50:32

标签: regex excel vba excel-vba word-vba

首要问题: 如何访问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个“Paragraphs”空间(这些文档可以是1页或有时10或更多)。如果有人能指出我更快的方式来实现这一目标,我将不胜感激。

我想我最终不得不这样做,一旦我弄清楚如何RegEx搜索整个文件就是这个

  1. 收集([A-Z0-9] {17})
  2. 的所有RegExp匹配项
  3. 使用步骤1中的匹配项通过InStr
  4. 查找文档中的位置
  5. 使用步骤2中的值循环遍历步骤1中的每组匹配项,以及步骤2中的索引,以形成类似于以下代码的内容。
  6. 代码:

    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文件中的整个文本,我可以从那里开始,但如果有人对如何更好的想法从这里开始,我很感激。

1 个答案:

答案 0 :(得分:1)

我喜欢在幕后使用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文件位于同一文件夹中,并且是直接剪切&从上面的示例代码粘贴。

结果:

enter image description here


现在,您可以针对strInput中的文本运行所需的正则表达式。如果您需要有关Regex部分的帮助,请查看this link以获取使用Regex和Excel的一些有用提示。