我有一個大文本檔案,其中包含多個文本“Process ID #”,后跟資料,例如:
Status Pending
Process ID #483300
#1522551 New
Status Pending
Process ID #483319
#1522502 New
Status Pending
Process ID #483313
我曾嘗試使用代碼允許我指定文本檔案,然后使用 InStr 函式,但它只會識別第一次出現的情況。任何幫助表示贊賞。
我的最終輸出就像
行程 ID #483300 行程 ID #483319 行程 ID #483313
uj5u.com熱心網友回復:
請嘗試使用下一個功能(使用RegEx):
Function ExtractProcID(x As String) As Variant
Dim matches As Object, mch As Object, arr, k As Long
ReDim arr(Int(Len(x) / 12))
With CreateObject("VbScript.regexp")
.Pattern = "Process ID #" & "[0-9]{6,7}"
.Global = True
If .test(x) Then
Set matches = .Execute(x)
For Each mch In matches
arr(k) = mch: k = k 1
Next
End If
End With
If k > 0 Then
ReDim Preserve arr(k - 1)
ExtractProcID = arr
Else
ExtractProcID = Array("")
End If
End Function
您可以在上面的字串上測驗它:
Sub testExtractProcID()
Dim x As String, arr
x = "Process ID #483300 " & vbCrLf & _
"#1522551 New" & vbCrLf & _
"status Pending" & vbCrLf & _
"Process ID #483319 " & vbCrLf & _
"#1522502 New " & vbCrLf & _
"status Pending" & vbCrLf & _
"Process ID #483313 "
arr = ExtractProcID(x)
Debug.Print Join(arr, ", ")
End Sub
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/535766.html
標籤:擅长VBA
上一篇:從本地讀取xlsx檔案
