你这文件结构都很规范,将文件存到数组里,然后一条条导就行了!!
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函数分解各个字段的内容存就行了!!

解决方案 »

  1.   

    Private 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
     
        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.   


    '终于搞定了!化了我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