下面代码实现了把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
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
就当csv文件是数据库,连接串:"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\abc.csv;"
用SHELL导呢,狠快,但它导的时候动一下鼠标焦点没了就不行了。有没有别的办法把导入这个动作搞到后台进行,速度还要像用SHELL时一样。
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
set rs=cn.execute("select * from abc.csv")
看里面有什么方法可以导入吗?这个我也不熟悉。
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
2、利用ACCESS中OutputTo方法或宏操作;
3、利用ACCESS中TransferSpreadsheet方法或宏操作;
hWnd=Shell( "C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE " & mdb_file, vbNormalFocus)
SendMessage HWnd, WM_KEYDOWN, mykey, 0&mykey是你要发送的字符,必须是一个一个的。
sendmessage hwnd,WM_KEYDOWN,%g,0&
sendmessage hwnd,WM_KEYDOWN,%i,0&SendKeys "{ENTER}", True
sendmessage hwnd,WM_KEYDOWN,{ENTER},0&
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),延迟一段时间。
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出错
Shell "C:\Program Files\Microsoft Office\Office10\MSACCESS.EXE " & mdb_file, vbNormalFocus
hwnd=findwindow(vbnullstring,"Microsoft Access")
通过查找,来得到hwnd.
哥们这句不行啊。
http://support.microsoft.com/kb/q230265/