我想实现当用户在点excel保存的时候 
里面的数据能够上传到数据库里 
这是我的代码 
麻烦高手帮我修改哈 
谢谢大家了, 
表temp9与excel字段是对应的 
我现在难就难在excel点保存的时候就触发这个函数 ,同时代码也有点小问题,麻烦大家了
Private Sub Command2_Click() 
          Dim Adocon    As New ADODB.Connection 
    
          Adocon.ConnectionString = "Provider  =  MSDAORA.1;Password  =8233;  Persist  Security  Info  =  True;User  ID  =  sa;Initial  Catalog  =  hskmis;  Data  Source  =  192.168.0.250" 
          Adocon.CursorLocation = adUseClient 
          Adocon.ConnectionTimeout = 120 
          Adocon.Open 
        Adocon.Execute ("INSERT  into  temp9  SELECT  select  *  from OPENROWSET('MICROSOFT.JET.OLEDB.4.0,'Excel  5.0;HDR=YES;IMEX=2;DATABASE=c:\1.xls',[sheet1$])") 
          Adocon.Close 
          Set Adocon = Nothing 
  End Sub

解决方案 »

  1.   

    好象已经告诉你了?貌似通过sql server操作excel还有可能,反过来应该不行.以下是sql server操作excel的相关内容. 
    SQL SERVER 和EXCEL的数据导入导出
    1、在SQL SERVER里查询Excel数据:
    -- ======================================================
    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
    下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
    SELECT * 
    FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    -------------------------------------------------------------------------------------------------2、将Excel的数据导入SQL server :
    -- ======================================================
    SELECT * into newtable
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
    实例:
    SELECT * into newtable
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    -------------------------------------------------------------------------------------------------3、将SQL SERVER中查询到的数据导成一个Excel文件
    -- ======================================================
    T-SQL代码:
    EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
    参数:S 是SQL服务器名;U是用户;P是密码
    说明:还可以导出文本文件等多种格式
    实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
    EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
    在VB6中应用ADO导出EXCEL文件代码: 
    Dim cn  As New ADODB.Connection
    cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
    cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
    ------------------------------------------------------------------------------------------------4、在SQL SERVER里往Excel插入数据:
    -- ======================================================
    insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)T-SQL代码:
    INSERT INTO  
    OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',  
    'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]  
    (bestand, produkt) VALUES (20, 'Test')  
      

  2.   

    好吧LZ我给你个链接,你自己研究一下吧,里面有你想要的东西
    http://www.google.cn/search?hl=zh-CN&rlz=1G1GGLQ_ZH-CNCN357&newwindow=1&q=VBA%E4%BA%8B%E4%BB%B6&btnG=Google+%E6%90%9C%E7%B4%A2&aq=f&oq=
      

  3.   

    本帖最后由 fcuandy 于 2009-12-01 01:52:26 编辑
      

  4.   


    点保存的时候就触发这个函数, 这个我也想知道, 等高手!还有你的代码貌似没有看出什么问题嘛,可能每个人习惯不一样, 在excel里面用vba, 提交数据的时候俺一般都是逐行遍历当前的sheet, 每一行拼接成一个sql语句, 然后让connection对象执行更新数据库.
      

  5.   

    我把代码又改了哈,但是仍然不行,麻烦大家把我程序拷贝过去运行一下,看问题出现在那里,希望今天能够解决了Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
       Dim cn As Object
    Set cn = CreateObject("adodb.connection")
       
       Dim rs As Object
    Set rs = CreateObject("adodb.Recordset")
       
       Dim cn1 As Object
    Set cn1 = CreateObject("adodb.connection")
            
        cn.Open "Provider='Microsoft.Jet.OLEDB.4.0';Data Source='c\1.xls';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'"
        Set rs = cn.Execute("Select * From [Sheet1$]")
        cn1.Open "Provider=sqloledb;Server=192.168.0.250;Database=hskmis;Uid=sa;Pwd=8233;"
            
        Do While Not rs.EOF
          cn1.Execute ("Insert Into temp9 VALUES ('" & Format(rs(0)) & "','" & Format(rs(1)) & "',")
          rs.MoveNext
      Loop
      rs.Close: cn.Close: cn1.Close
      Set rs = Nothing: Set cn = Nothing: Set cn1 = Nothing
    End Sub
      

  6.   

    LZ用VB吧,直接编个程序应该就行了。试一下吧。VBA毕竟不能脱离office的。
      

  7.   

    我是要到excel里操作啊,因为公司一些人经常要将excel里的数据传送到数据库里,所以我想用vba来去实现啊
      

  8.   

    要么用VB编写个程序界面
    要么用ACCESS,EXCEL打开后是独占的,不能同时打开EXCEL和ADO链接的
      

  9.   

    可以的啊,我们公司的一些excel就是用这个方法实现的用户点保存后就插入到数据库里了