Cmd.CommandType 似乎没有改过来。
把他设为adCmdText。

解决方案 »

  1.   

    你的cmd对象使用了两次,第一次用于连接xls,第二用于连接acess,当第一次的还在生效时你又用来连接acess,所以建议你在两次连接中使用不同的cmd对象,以下代码
    调试成功.
      Dim Conn As New ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim Cmd As New ADODB.Command
    Dim Cmd1 As New ADODB.Command   '添加一个新的cmd对象cmd1Dim sSql As String
    Dim connStr As String
    Dim ConnExcel As New ADODB.ConnectionconnStr = "Provider=MSDASQL.1;Driver={Microsoft Excel Driver (*.xls)};DBQ=C:\My Documents\Book2.xls"
    ConnExcel.Open connStr
    Set Cmd.ActiveConnection = ConnExcel
    Cmd.CommandType = adCmdTable
        
    Cmd.CommandText = "[sheet1$]"
    Set rs = Cmd.Execute
    rs.MoveFirst
    While Not rs.EOF
            Conn.ConnectionString = " Provider=Microsoft.Jet.OLEDB.4.0;" & _
                 "Data Source=C:\My Documents\db1.mdb"
            Conn.Open
            Set Cmd1.ActiveConnection = Conn   '使用新的cmd对象cmd1
            sSql = "select * from cz"
            Cmd1.CommandText = sSql
            Cmd1.Execute
            rs.MoveNext
            Conn.Close
            Set Conn = Nothing
     Wend
      

  2.   

    在循环中conn已经打开,在尚未关闭时再次打开,当然要出错。
    你的算法不大好,我看不出它有什么用,通过什么来达到你所要求的功能?
      

  3.   

    上面的弟兄都说对了。我的代码有两个以上的问题。
    一个是`cmd对象的Cmd.CommandType 没有改。
    还有是循环的时候conn对象没有关闭。我也觉得自己的算法不好。
    不过cool222(菜得不能再菜) ,你能说说好点的算法嘛?谢了
    我的目的是从excel表导入数据到access表。
      

  4.   

    SQL:
    select 字段列表 into 新表名 in 外部数据库 from 源表 where 条件
    选取源表中的相关字段添加到外部数据库中,生成新表
    详细资料请查阅SQL参考
      

  5.   

    SQL:
    select 字段列表 into 新表名 in 外部数据库 from 源表 where 条件
    选取源表中的相关字段添加到外部数据库中,生成新表
    详细资料请查阅SQL参考
      

  6.   

    SQL:
    select 字段列表 into 新表名 in 外部数据库 from 源表 where 条件
    选取源表中的相关字段添加到外部数据库中,生成新表
    详细资料请查阅SQL参考