各位朋友:    我需要将 Test.xls数据表中 range("A1:D100")的数据一次性插入到数据表中,以下语句该怎么修改:
我知道通过查询语句一次性插入多条记录,但是在Excel记录集如何描述该条语句,希望通过定义一个动态二维数组也没实施成功,烦请知情朋友指点一下,谢谢.Execute "Insert Into TestTable Select ...."通过循环这种方法太笨了,而且行数列数都是不固定的
For i = 1 To 100
    .Execute "Insert Into TestTable Value("& objsheets(cells(i,1),objsheets(cells(i,2)....)
Next

解决方案 »

  1.   

    补充说明一下,目的是将Excel表中数据插入到数据库数据表中
    Test.xls                  Excel电子表
    TestTable                 Access数据表
      

  2.   

    列数不固定?那你怎么插入阿excel可以找到行数和列数的,然后就循环吧我觉得挺好
      

  3.   

    行数列数都是可以动态获取的,关键是我希望通过记录集的方式批量插入Insert Into TestTable Select * From $Sheet1 类似这样
      

  4.   

    Insert Into TestTable Select * From $Sheet1 
    这种方式只能插入一次
    不能后续插入
    也就是说这样插入的表名testtable必须是目前的database中不存在的
    你可以把excel的内容读到recordset中
    然后循环着读recordset就快很多,也方便一些
      

  5.   

    '取得excel文件的记录集
    Public Function GetExcelRs(ByVal strName As String) As ADODB.Recordset
    Dim Rs As ADODB.Recordset
    Set Rs = New ADODB.Recordset
    Dim conn As String
    Rs.CursorLocation = adUseClient
    Rs.CursorType = adOpenDynamic
    Rs.LockType = adLockBatchOptimistic
    conn = "data provider=msdasql.1;driver=microsoft excel driver (*.xls);dbq=" & strName
    Rs.Open "SELECT * FROM [sheet1$]", conn
    Set GetExcelRs = Rs
    Set Rs = Nothing
    End Function
    用这个代码取
    然后用哪一列,哪一行开始
    都可以用recordset来决定
      

  6.   

    如果想看recordset的内容,你可以用datagrid来看看
    然后决定取哪一列
      

  7.   


    datou985朋友:   请问一下,Access数据库支持插入记录集吗? 如下调试时出现类型不符,我将上面GetExcelRs函数进行了修改,文件名和路径名和活动工作表名称 动态获取  .Execute "Insert Into TestTabl & GetExcelRst