Regex vba script throwing error : runtime error 9 ... Subscript out of range

Regex vba script throwing error : runtime error 9 ... Subscript out of range

我有一个 Word 文档,脚注中提到了一些数字。我正在将这些引用导出为 csv 文件。

Sub FindNumber()
Dim exp, exp1 As RegExp
Set exp = New RegExp
exp.Pattern = "\b[A-Za-z]{3}[0-9]{7}\b"
exp.Global = True

Dim splits(1000) As String
Dim x As Long

Dim results As MatchCollection
Set results = exp.Execute(ActiveDocument.StoryRanges(wdFootnotesStory))
x = 1

For Each res In results
splits(x) = res
x = x + 1
Next res


Dim Filename As String, line As String
Dim i As Integer
Filename = "C:\VBA Export" & "\Numbers.csv"
Open Filename For Output As #2
Print #2, "Control Numbers"
For i = LBound(splits) To UBound(splits)

Print #2, splits(i)

Next i
Close #2
MsgBox "Numbers were exported to " & Filename, vbInformation
End Sub

上面的代码工作正常,只是突然在 'splits(x) = res' 开始抛出错误 我已经尝试检查我的正则表达式,我可以看到它工作正常。如果我将 splits(x) 更改为 splits(6) 或类似的东西,它就像一个魅力。

有人可以帮忙吗?

EDIT - 更改代码以将匹配项直接写入 Excel.

Sub Tester()

    Dim oXl As Excel.Application 'add reference to MS Excel object library...
    Dim oWb As Excel.Workbook, c As Excel.Range, i As Long, col As Collection
    
    Set oXl = New Excel.Application
    oXl.Visible = True
    Set oWb = oXl.Workbooks.Add()
    Set c = oWb.Worksheets(1).Range("A1")
    
    ListMatchesInExcel ActiveDocument.StoryRanges(wdFootnotesStory), _
                       "\b[A-Za-z]{3}[0-9]{7}\b", _
                       "Id Numbers", c
    Set c = c.Offset(0, 1)
                    
    ListMatchesInExcel ActiveDocument.StoryRanges(wdFootnotesStory), _
                    "\b[A-Za-z]{2}[0-9]{9}\b", _
                    "Other Numbers", c
    Set c = c.Offset(0, 1)
    
    'etc etc
End Sub

'Search through `SearchText` for text matching `patt` and export all
'  matches to Excel with a header `HeaderText`, starting at range `c`
Sub ListMatchesInExcel(SearchText As String, patt As String, _
                     headerText As String, c As Excel.Range)
    'add reference to MicroSoft VBscript regular expressions
    Dim exp, exp1 As RegExp, col As New Collection
    Dim results As MatchCollection, res As Match, i As Long
    
    Set exp = New RegExp
    exp.Pattern = patt
    exp.Global = True
    Set results = exp.Execute(SearchText)
    'log to Immediate pane
    Debug.Print (col.Count - 1) & " matche(s) for '" & patt & "'"
    c.Value = headerText
    i = 1
    For Each res In results
        c.Offset(i).Value = res
        i = i + 1
    Next res
    c.EntireColumn.AutoFit
End Sub