下面代码实现了把CSV文件导到ACCESS里还有别的办法替代这段代码嘛。、快速的导入不用SHELL,导入的时候在后台操作。
If MyFileObject.FileExists(csv_file) = True And MyFileObject.FileExists(mdb_file) = True Then
        Shell "C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE " & mdb_file, vbNormalFocus
        SendKeys "%fgi", True
        SendKeys csv_file, True
        SendKeys "%m", True
        SendKeys "%dn", True
        SendKeys "%cn", True
        SendKeys "%n", True
        SendKeys "%n", True
        SendKeys "%on", True
        SendKeys "{ENTER}", True
        SendKeys "{ENTER}", True
        SendKeys "%{F4}", True
    End If

解决方案 »

  1.   

    能不能用Dao.Recordset直接打开CSV文件,然后再导入access中呢?
      

  2.   

    一定有分,分不够另开贴给分,哥们在别的块里混,分还是有点。 Begin2008(重头再来) 仔细说一下好不。哥们不懂这个。速度快嘛。我要导好几十个一次。
      

  3.   

    同意 Begin2008(重头再来) 
    就当csv文件是数据库,连接串:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\abc.csv;" 
      

  4.   

    用逗号分隔的文本文件,就是excel文件的一种。
      

  5.   

    以前是把CSV文件读到数组里然后在往ACCESS里写但是慢。
    用SHELL导呢,狠快,但它导的时候动一下鼠标焦点没了就不行了。有没有别的办法把导入这个动作搞到后台进行,速度还要像用SHELL时一样。
      

  6.   

    dim cn as new adodb.connection
    dim cn2 as new adodb.connection
    dim rs as new adodb.recordset
    dim sSql as string
    '注:上面写错,SORRY
    cn.open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\csvFilesFolder\;"
    cn2.open "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;"
    set rs=cn.execute("select * from abc")
    while not rs.eof
     '这个SQL语句你自己处理一下,注意前后空格
     sSql=sSql & " insert into MDB表 values('" & rs(0) & "','" & rs(1) & ..... "
     rs.movenext
    next
    cn2.execute(sSql)
    cn2.close
    set cn2=nothing
    rs.close
    set rs=nothing
    cn.close
    set cn=nothing
      

  7.   

    补:
    set rs=cn.execute("select * from abc.csv")
      

  8.   

    谢谢楼上的哥们,这种方法不快。比用SHELL时慢狠多。我要导的东西狠多,几十个的话好长时间。这种方法以前用过。
      

  9.   

    那你引用MICROSOFT ACCESS 9.0 OBJECT LIBRARY
    看里面有什么方法可以导入吗?这个我也不熟悉。
      

  10.   

    请参考:
      http://access911.net/index.asp?u1=a&u2=74FAB01E11DC
      
      导入、导出 Excel 表格
    http://access911.net/eg/swf/i_o_excel.htm
    http://access911.net/eg/swf/i_o_excel.swfhttp://access911.net/73FAB01E.htm
    如何将一个文本文件用SQL语句导入到ACCESS表中
    http://access911.net/72FAB41E1BDC.htmhttp://access911.net/77FAB01E16DC.htm
      

  11.   

    1、利用ACCESS自有的import/export;
    2、利用ACCESS中OutputTo方法或宏操作;
    3、利用ACCESS中TransferSpreadsheet方法或宏操作;
      

  12.   

    将sendkeys改成使用sendmessage,就不会受鼠标的限制了,并且充分利用了access的快速性。大体思路是:
    hWnd=Shell( "C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE " & mdb_file, vbNormalFocus)
          SendMessage HWnd, WM_KEYDOWN, mykey, 0&mykey是你要发送的字符,必须是一个一个的。
      

  13.   

    CSV文件是用逗号分隔的文件,你把这个当成文本文件处理好了,每次用vb读取一行,然后用split函数分割该字符串,然后分别插入到access中就可以了啊
      

  14.   

    Fashionxu() 是改成下面这样嘛。SendKeys "%fgi", Truesendmessage hwnd,WM_KEYDOWN,%f,0&
    sendmessage hwnd,WM_KEYDOWN,%g,0&
    sendmessage hwnd,WM_KEYDOWN,%i,0&SendKeys "{ENTER}", True
    sendmessage hwnd,WM_KEYDOWN,{ENTER},0&
      

  15.   

    creazyfish(梳分头的鱼) (哪样的话狠慢,以前试过了
      

  16.   

    不是的,你要把它转换成键盘码alt键 
    Public Const VK_MENU = &H12SendKeys "%fgi", Truesendmessage hwnd,WM_KEYDOWN,vk_menu,0&
    sendmessage hwnd,WM_KEYDOWN,asc("f"),0&
    sendmessage hwnd,WM_KEYDOWN,asc("g"),0&
    sendmessage hwnd,WM_KEYDOWN,asc("i"),0&
    为了保证程序的同步进行,最好在各个语句之间加入sleep(x),延迟一段时间。
      

  17.   

    Fashionxu() VK_MENU = &H12
    hWnd = Shell("C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE " & mdb_file, vbNormalFocus)
            sendmessage hWnd, WM_KEYDOWN, VK_MENU, 0&
            sendmessage hWnd, WM_KEYDOWN, Asc("f"), 0&
            sendmessage hWnd, WM_KEYDOWN, Asc("g"), 0&
            sendmessage hWnd, WM_KEYDOWN, Asc("i"), 0&编译错误
    函数或接口标记为限制的,或函数中使用了VB中不支持的自动类型   hWnd出错
      

  18.   

    呵呵,那你就换一种方式。
    Shell "C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE " & mdb_file, vbNormalFocus
    hwnd=findwindow(vbnullstring,"Microsoft Access")
    通过查找,来得到hwnd.
      

  19.   

    hwnd=findwindow(vbnullstring,"Microsoft Access")
    哥们这句不行啊。
      

  20.   

    ImportText.exe Importing Text into Access with ADO/RDO/DAO/Filesys/Automation
    http://support.microsoft.com/kb/q230265/