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为: