Public Function LoadInfoFile(fvFileName As String) As Boolean Dim fs As Integer Dim LineStr As String Dim InStrLong As Long Dim NowItem As String Dim NowListItem As InfoListItem Dim ReString As String Dim TempString As String Dim ValueType As Long Dim OrderBy As Long If Dir(fvFileName, vbReadOnly + vbSystem + vbHidden) <> "" Then mvarFileName = fvFileName fs = FreeFile Open fvFileName For Input As #fs Do While Not EOF(fs) Line Input #fs, LineStr LineStr = Replace(LineStr, vbTab, " ") LineStr = Trim(LineStr) If Len(LineStr) > 0 Then '处理注译信息 ReString = "" InStrLong = InStr(1, LineStr, "//") - 1 If InStrLong > 0 Then TempString = LineStr LineStr = Left(LineStr, InStrLong) LineStr = Trim(LineStr) ReString = Right(TempString, Len(TempString) - InStrLong - 2) ReString = Trim(ReString) End If '段落识别 If Left(LineStr, 1) = "[" And Right(LineStr, 1) = "]" Then LineStr = Mid(LineStr, 2, Len(LineStr) - 2) NowItem = LineStr Set NowListItem = InfoListClass.Add(NowItem, ReString, Replace(NowItem, " ", "_")) OrderBy = 0 Else '分析主题和内容 OrderBy = OrderBy + 1 StringArray = Split(LineStr, "=") If UBound(StringArray) = 1 Then StringArray(0) = Trim(StringArray(0)) StringArray(1) = Trim(StringArray(1)) If Left(StringArray(1), 1) = Chr(34) And Right(StringArray(1), 1) = Chr(34) Then ValueType = vbString StringArray(1) = Mid(StringArray(1), 2, Len(StringArray(1)) - 2) ElseIf UCase(StringArray(1)) = "TRUE" Or UCase(StringArray(1)) = "FALSE" Then ValueType = vbBoolean ElseIf IsNumeric(StringArray(1)) = True Then ValueType = vbLong ElseIf Left(StringArray(1), 1) = "#" Then ValueType = vbByte Else ValueType = vbString End If NowListItem.InfoItemClass.Add StringArray(0), StringArray(1), ReString, ValueType, OrderBy End If End If End If Loop Close #fs End IfEnd Function
你表达的有问题? 每个日期段的每行文本 没看明白 都存为变量 没看明白如果要去的所有日期的话用下面代码: '此代码由“正则测试工具 v1.1.33”自动生成,请直接调用TestReg过程 Private Sub TestReg() Dim strData As String Dim reg As Object Dim matchs As Object, match As Object strData = "文本内容如下" & vbCrLf & _ "[2011-04-28]" & vbCrLf & _ "文本1" & vbCrLf & _ "文本2" & vbCrLf & _ "[2011-04-29]" & vbCrLf & _ "文本3" & vbCrLf & _ "文本4" & vbCrLf & _ "[2011-04-30]" & vbCrLf & _ "文本5" Set reg = CreateObject("vbscript.regExp") reg.Global = True reg.IgnoreCase = True reg.MultiLine = True reg.Pattern = "\[(.+)\]" Set matchs = reg.Execute(strData) For Each match In matchs Debug.Print match.SubMatches(0) Next End Sub
Public Function LoadInfoFile(fvFileName As String) As Boolean
Dim fs As Integer
Dim LineStr As String
Dim InStrLong As Long
Dim NowItem As String
Dim NowListItem As InfoListItem
Dim ReString As String
Dim TempString As String
Dim ValueType As Long
Dim OrderBy As Long
If Dir(fvFileName, vbReadOnly + vbSystem + vbHidden) <> "" Then
mvarFileName = fvFileName
fs = FreeFile
Open fvFileName For Input As #fs
Do While Not EOF(fs)
Line Input #fs, LineStr
LineStr = Replace(LineStr, vbTab, " ")
LineStr = Trim(LineStr)
If Len(LineStr) > 0 Then
'处理注译信息
ReString = ""
InStrLong = InStr(1, LineStr, "//") - 1
If InStrLong > 0 Then
TempString = LineStr
LineStr = Left(LineStr, InStrLong)
LineStr = Trim(LineStr)
ReString = Right(TempString, Len(TempString) - InStrLong - 2)
ReString = Trim(ReString)
End If
'段落识别
If Left(LineStr, 1) = "[" And Right(LineStr, 1) = "]" Then
LineStr = Mid(LineStr, 2, Len(LineStr) - 2)
NowItem = LineStr
Set NowListItem = InfoListClass.Add(NowItem, ReString, Replace(NowItem, " ", "_"))
OrderBy = 0
Else
'分析主题和内容
OrderBy = OrderBy + 1
StringArray = Split(LineStr, "=")
If UBound(StringArray) = 1 Then
StringArray(0) = Trim(StringArray(0))
StringArray(1) = Trim(StringArray(1))
If Left(StringArray(1), 1) = Chr(34) And Right(StringArray(1), 1) = Chr(34) Then
ValueType = vbString
StringArray(1) = Mid(StringArray(1), 2, Len(StringArray(1)) - 2)
ElseIf UCase(StringArray(1)) = "TRUE" Or UCase(StringArray(1)) = "FALSE" Then
ValueType = vbBoolean
ElseIf IsNumeric(StringArray(1)) = True Then
ValueType = vbLong
ElseIf Left(StringArray(1), 1) = "#" Then
ValueType = vbByte
Else
ValueType = vbString
End If
NowListItem.InfoItemClass.Add StringArray(0), StringArray(1), ReString, ValueType, OrderBy
End If
End If
End If
Loop
Close #fs
End IfEnd Function
每个日期段的每行文本 没看明白
都存为变量 没看明白如果要去的所有日期的话用下面代码:
'此代码由“正则测试工具 v1.1.33”自动生成,请直接调用TestReg过程
Private Sub TestReg()
Dim strData As String
Dim reg As Object
Dim matchs As Object, match As Object strData = "文本内容如下" & vbCrLf & _
"[2011-04-28]" & vbCrLf & _
"文本1" & vbCrLf & _
"文本2" & vbCrLf & _
"[2011-04-29]" & vbCrLf & _
"文本3" & vbCrLf & _
"文本4" & vbCrLf & _
"[2011-04-30]" & vbCrLf & _
"文本5" Set reg = CreateObject("vbscript.regExp")
reg.Global = True
reg.IgnoreCase = True
reg.MultiLine = True
reg.Pattern = "\[(.+)\]"
Set matchs = reg.Execute(strData)
For Each match In matchs
Debug.Print match.SubMatches(0)
Next
End Sub