繁体   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