table中的字段
id    bh     name
4   29023000 甲苯 
5   29053990 其他二元醇 
excel中sheet2中的数据是
29023000 甲苯 朝鲜 
29023000 甲苯 韩国 
29023000 甲苯 日本 
29023000 甲苯 台湾省 
29023000 甲苯 新加坡 
29053990 乙苯 奥地利 
29053990 乙苯 澳大利亚 
29053990 乙苯 巴西 
29053990 乙苯 朝鲜 
29053990 乙苯 德国 
29053990 乙苯 法国 
29053990 乙苯 韩国 
现在我想把表table中对应的id号取出
然后对应加入到sheet2中去啊
使得sheet2中数据为
29023000 甲苯 朝鲜      4
29023000 甲苯 韩国      4
29023000 甲苯 日本      4
29023000 甲苯 台湾省    4
29023000 甲苯 新加坡    4
29053990 乙苯 奥地利    5
29053990 乙苯 澳大利亚  5
29053990 乙苯 巴西      5
29053990 乙苯 朝鲜      5
29053990 乙苯 德国      5
29053990 乙苯 法国      5
29053990 乙苯 韩国      5
用VBA该如何写啊??

解决方案 »

  1.   

    哦,错了
    table中的字段应该是
    id    bh     name
    4   29023000 甲苯 
    5   29053990 乙苯 
      

  2.   

    没找到好的方法,只好用循环来做了(注意,Excel里的第一行设置为标题,标题名与table的一样,不是数据):Private Sub Form_Load()
        Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
        cn.CursorLocation = adUseClient
        '具体的连接请自己改过来
        cn.Open "Provider=SQLOLEDB.1;Password=;Persist Security Info=False;User ID=sa;Initial Catalog=Test;Data Source=ljx"
        rs.Open "select distinct [id],bh from tb", cn, adOpenKeyset, adLockOptimistic
        On Error GoTo UpdateErr    While Not rs.EOF
            cn.Execute ("update OpenRowSet('microsoft.jet.oledb.4.0','Excel 8.0;hdr=yes;database=c:\book1.xls;','select * from [Sheet2$]') set [id]='" & rs("id") & "' where bh='" & rs("bh") & "'")
            rs.MoveNext
        Wend
        
        rs.Close
        cn.Close
        Set rs = Nothing
        Set cn = Nothing
        Exit Sub
    UpdateErr:
        If rs.State <> adStateClosed Then rs.Close
        If cn.State <> adStateClosed Then cn.Close
        Set rs = Nothing
        Set cn = Nothing
        MsgBox Err.Description
    End Sub
      

  3.   

    呵呵,谢谢了!
    搞定了啊!还有就是昨天那个从excel里往数据库里导数据的时候
    strSQL = "INSERT into ciq_main (tax_id,product,m_number,m_amount,outm_number,outm_amount,date_y,date_m,YYYYMM,unit,t_number,t_amount,outt_number,outt_amount,more,authority,createdtime) " & _
                "SELECT *,'2006','1','200601','不详','','','','','有','3',substring(cast(getutcdate() as char),1,10) as createdtime FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0', 'Data Source=C:\abc.xls;Extended Properties=Excel 8.0')...[Sheet1$]"
    老是说将数据类型varchar转化为numeric时出错!
    该如何解决
    数据库里的数据类型很多啊!