在VB中怎样读取Excel中保存的数据?

解决方案 »

  1.   

    引用Excel 对象    Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet    Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Open(....
        Set xlSheet = xlBook.Worksheets(1)
        xlSheet.Cells(1, 4).Value = "aaa"
      

  2.   

    我说一种dao的方法(也可用ado)
    假如excel数据
    male female children teens
    11 cc 78 ee
    22 xx 33 ff
    45 uu 56 oo
    用ISAM第一行略过
    在excel中定义名称(插入-名称-定义)
    名称范围 : myRange1male female children teens名称范围  : myRange211 cc 78 ee
    22 xx 33 ff
    45 uu 56 ooprivate Sub Command_click1im dbtmp As DAO.Database
    im tblObj As DAO.TableDef
    im rs As DAO.Recordsetet dbtmp = OpenDatabase_
    ("<complete path>\test.xls", False, True, "Excel 8.0;")DoEventsSet rs = dbtmp.OpenRecordset("select * from `myRange2`")
    While Not rs.EOF
    For x = 0 To rs.Fields.Count - 1
    Debug.Print rs.Fields(x).Value
    Next
    rs.MoveNext
    Wend
    End Sub在myRange2两边加'号.结果11
    cc
    78
    ee
    22
    xx
    33
    ff
    45
    uu
    56
    oo              ___
                 (  ">
                  )(
                 // )  [email protected]
              --//""------------
              -/------   
      

  3.   

    ado方法
    Dim adoConnection As New ADODB.Connection 
        Dim adoRecordset As New ADODB.Recordset 
        'OLE DB + ODBC Driver 方式: 
        'adoConnection.Open "Data Provider=MSDASQL.1;driver=Microsoft Excel Driver (*.xls);DBQ=e:\temp\book2.xls" 
        'Microsoft.Jet.OLEDB.4.0 方式,(建议) 
        adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=e:\temp\book2.xls;Extended Properties='Excel 8.0;HDR=Yes'" 
         
        adoRecordset.Open "select * from [sheet1$]", adoConnection, adOpenKeyset, adLockOptimistic 
        Debug.Print adoRecordset.RecordCount 
        Dim i As Integer 
        Do Until adoRecordset.EOF 
         For i = 0 To adoRecordset.Fields.Count - 1 
         Debug.Print adoRecordset.Fields.Item(0).Name 
         Debug.Print adoRecordset.Fields.Item(0).Value 
         Next i 
         adoRecordset.MoveNext 
        Loop 
         
        '注: OLE DB + ODBC Driver 方式不支持以下语句,但 Microsoft.Jet.OLEDB.4.0 方式支持! 
        adoConnection.Execute "insert into [sheet1$](F1) values(3)" 
        adoRecordset.AddNew Array("f1", "f2", "f3", "f4"), Array(1, 2, 3, 4)               ___
                 (  ">
                  )(
                 // )  [email protected]
              --//""------------
              -/------   
      

  4.   

    可以使用ado直接调用EXCEL的数据,而不需要使用ACCESS。 
        Dim oConn As New ADODB.Connection 
        Dim oRS As New ADODB.Recordset 
        oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
         "Data Source=C:\Book1.xls;" & _ 
         "Extended Properties=""Excel 8.0;""" 
        oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic '打开Sheet1,也可以是定义的名称,或一个Range。 
        .. 
        .. 
        .. 
        oRS.Close 
        oConn.Close 
        更具体的方法可以参考微软的Knowledge Base的文章:“Q278973 xcelADO Demonstrates How To Read/Write Data in Excel Workbooks”。 
        用这个方法调用EXCEL数据是非常快的。能否用VB的ADO的方法访问Excel文件,如果能该怎样实现?Dim adoConnection As New ADODB.Connection 
        Dim adoRecordset As New ADODB.Recordset 
        'OLE DB + ODBC Driver 方式: 
        'adoConnection.Open "Data Provider=MSDASQL.1;driver=Microsoft Excel Driver (*.xls);DBQ=e:\temp\book2.xls" 
        'Microsoft.Jet.OLEDB.4.0 方式,(建议) 
        adoConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=e:\temp\book2.xls;Extended Properties='Excel 8.0;HDR=Yes'" 
         
        adoRecordset.Open "select * from [sheet1$]", adoConnection, adOpenKeyset, adLockOptimistic 
        Debug.Print adoRecordset.RecordCount 
        Dim i As Integer 
        Do Until adoRecordset.EOF 
         For i = 0 To adoRecordset.Fields.Count - 1 
         Debug.Print adoRecordset.Fields.Item(0).Name 
         Debug.Print adoRecordset.Fields.Item(0).Value 
         Next i 
         adoRecordset.MoveNext 
        Loop 
         
        '注: OLE DB + ODBC Driver 方式不支持以下语句,但 Microsoft.Jet.OLEDB.4.0 方式支持! 
        adoConnection.Execute "insert into [sheet1$](F1) values(3)" 
        adoRecordset.AddNew Array("f1", "f2", "f3", "f4"), Array(1, 2, 3, 4) 微软的答案:
    http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q278/9/73.asp&NoWebContent=1
      

  5.   

    微软的答案:
    http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q278/9/73.asp&NoWebContent=1