你这文件结构都很规范,将文件存到数组里,然后一条条导就行了!!
Dim strTmp As String, strArray() As StringOpen "C:\aa.txt" For Input As #1
strTmp = StrConv(InputB(LOF(1), #1), vbUnicode)
Close #1strArray = Split(vbCrLf) '将文件内容存到数组里,一个元素代表文件的一行然后用MID函数分解各个字段的内容存就行了!!
Dim strTmp As String, strArray() As StringOpen "C:\aa.txt" For Input As #1
strTmp = StrConv(InputB(LOF(1), #1), vbUnicode)
Close #1strArray = Split(vbCrLf) '将文件内容存到数组里,一个元素代表文件的一行然后用MID函数分解各个字段的内容存就行了!!
'功能:将文本文件导入到Access中的表
'调用:Call TxtToMdb("c:\","test.txt","c:\a.mdb","NewTempTable")
'结果:将c:\test.txt导入到c:\a.mdb中的NewTempTable表中 Dim db As DAO.Database
Set db = DBEngine.CreateDatabase(sAccessFullFileName, dbLangGeneral)
If Err.Number = 3204 Then
Set db = Workspaces(0).OpenDatabase(sAccessFullFileName)
End If
db.Execute "SELECT * into " & sAccessTable & " FROM [Text;HDR=NO;DATABASE=" & sTxtPath & "]." & sTxtFileName
db.Close
Set db = Nothing
End Sub
'终于搞定了!化了我2个小时的时间啊,你调用getsometable即可,个别的地方需要你自己去完善,比如d:\600020.txt你可以做一个参数、比如如果表存在就删除、比如临时文件的删除等等。。
'总之这些都是小事了,你自己处理吧Private Sub GetSomeTable()
'从文本中提取一些表格
Call StartChange("` 十一、资产负债表`", "资产负债表")
Call StartChange("` 十二、损益表`", "损益表")
Call StartChange("` 十三、现金流量表`", "现金流量表")
Call StartChange("` 十四、财务状况`", "财务状况")
End SubPrivate Sub StartChange(strSTable As String, strTTable As String)
'开始提取某个特定表格
Dim strTmp As String
Dim strArray() As String
Dim i As Integer
Dim flag As Boolean
Open "d:\600020.txt" For Input As #1
strTmp = StrConv(InputB(LOF(1), #1), vbUnicode)
Close #1
strArray = Split(strTmp, vbCrLf) '将文件内容存到数组里,一个元素代表文件的一行 For i = 0 To UBound(strArray)
If InStr(strArray(i), strSTable) <> 0 Then
flag = True
i = i + 1
Open "d:\" & strTTable & ".txt" For Output As #1
End If
If flag Then
If Left(strArray(i), 1) <> "─" Then
Print #1, strArray(i)
Else
icount = icount + 1
End If
If icount = 3 Then
Close #1
Call WriteTempSchemia(strTTable & ".txt", "│")
Call TxtToMdb("d:", strTTable & ".txt", "d:\out.mdb", strTTable)
Exit For
End If
End If
Next i
End SubPublic Sub WriteTempSchemia(strFileName As String, strSeparator As String)
'写入格式符号文件
Open "d:\Schema.ini" For Output As #1
Print #1, "[" & strFileName & "]"
Print #1, "Format=Delimited(" & strSeparator & ")"
Close #1
End SubPrivate Sub TxtToMdb(sTxtPath As String, sTxtFileName As String, sAccessFullFileName As String, sAccessTable As String)
'功能:将文本文件导入到Access中的表
'调用:Call TxtToMdb("c:\","test.txt","c:\a.mdb","NewTempTable")
'结果:将c:\test.txt导入到c:\a.mdb中的NewTempTable表中 Dim db As DAO.Database
On Error Resume Next
Set db = DBEngine.CreateDatabase(sAccessFullFileName, dbLangGeneral)
If Err.Number = 3204 Then
Set db = Workspaces(0).OpenDatabase(sAccessFullFileName)
End If
db.Execute "SELECT * into " & sAccessTable & " FROM [Text;HDR=NO;DATABASE=" & sTxtPath & "]." & sTxtFileName
db.Close
Set db = Nothing
End Sub