vbamacros读取带有分隔和非分隔空格的string

我有一个.txt文件,具有如下表信息

Recipient PanelSize NumberOfAlerts Michigan Regional 42454 15756 Wellcare 21234 8492 Michigan Patient Care 6789 1056 

我正在使用VBAmacros读取.txt文件并input到Excel工作表中。

我主要与收件人有问题。 收件人名称包含空格,所以使用

 vDatavalues = Split(sLine, " ") 

分离收件人

 Michigan| |Patient| |Care| 

我不想要。

我怎样才能分割我正在阅读的行格式化成3列正确阅读从表中逐行?

编辑:这是我想要读取和格式TEST.txt的.txt文件的示例

这工作:

 Dim sLine As String sLine = "Michigan Patient Care 6789 1056" 'Remove all double spaces Do While InStr(sLine, " ") <> 0 sLine = Replace(sLine, " ", " ") Loop 'Split using space delimiters Dim splitLine() As String splitLine = Split(sLine, " ") 'Collect recipient pieces '(ie all pieces but the last two, which we know are PanelSize and NumberOfAlerts) Dim splitRecipient() As String ReDim splitRecipient(0 To UBound(splitLine) - 2) Dim i As Long For i = 0 To UBound(splitRecipient) splitRecipient(i) = splitLine(i) Next i 'Join recipient pieces MsgBox "Recipient: " & Join(splitRecipient, " ") & vbCrLf & _ "PanelSize: " & splitLine(UBound(splitLine) - 1) & vbCrLf & _ "NumberOfAlerts: " & splitLine(UBound(splitLine)) 

在这里输入图像说明

但实际上,如果你的文件是固定宽度格式的,而且列的宽度一般都是一样的,并且用空格填充,那么就容易多了。 在你的例子中,第一列看起来像30个字符宽,第二个27列。所以在这种情况下,你可以这样做:

 Dim sLines() As String ReDim sLines(1 To 3) sLines(1) = "Michigan Regional 42454 15756" sLines(2) = "Wellcare 21234 8492" sLines(3) = "Michigan Patient Care 6789 1056" Dim iLine As Long For iLine = LBound(sLines) To UBound(sLines) MsgBox "Recipient: " & Trim(Mid(sLines(iLine), 1, 30)) & vbCrLf & _ "PanelSize: " & Trim(Mid(sLines(iLine), 31, 27)) & vbCrLf & _ "NumberOfAlerts: " & Trim(Mid(sLines(iLine), 58)) Next iLine 

第一行然后被parsing为:

在这里输入图像说明