能否给VB中操作ACCESS的数据导入导出命令的模块,源代码。谢谢

lioner9944 2004-12-16 03:22:28
由于程序无法实现。特求
...全文
279 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingyt 2004-12-28
  • 打赏
  • 举报
回复
我也有类似的问题,关注一下。同病相怜呀!
lioner9944 2004-12-16
  • 打赏
  • 举报
回复
以前用的是:
'EXCEL导入ACCESS模块声明
'调用ExportExportExcelSheetToAccess"sSheetName", "sExcelPath", "AccessTable", "sAccessDBPath"
'还要引用Microsoft DAO3.6 Objects Library


Private Sub ExportExcelSheetToAccess(sSheetName As String, sExcelPath As String, sAccessTable As String, sAccessDBPath As String)
Dim db As Database
Dim rs As Recordset

Set db = OpenDatabase(App.Path & sExcelPath, True, False, "Excel 8.0")
'Call db.Execute("select * into [;database=" & App.Path & sAccessDBPath & "]." & sAccessTable & " from [" & sSheetName & "$] ")
Call db.Execute("Delete * from [;database=" & App.Path & sAccessDBPath & "]." & sAccessTable & " ")
Call db.Execute("Insert Into [;database=" & App.Path & sAccessDBPath & "]." & sAccessTable & " Select * FROM [" & sSheetName & "$]")
End Sub

只是当EXCEL中某列中有一些数据与其他数据类型不一致,所以导致导入后,不一致的数据的单元格为空。

导出用的是:
'ACCESS导出到EXCEL模块声明__sheet(i)
'调用ExportAccessToExcelSheet "sSheetName", "sExcelPath", "AccessTable", "sAccessDBPath"
'i=i+1
'还要引用microsoft Excel 11.0 Object Library和microsoft ActiveX Data Objects 2.0 Library
'每次只能保证更新第一张SHEET,而且不能导入ACCESS中TABLE的FIELDNAME
'且ACCESS和EXCEL文件必须实现存在。


Public Sub ExportAccessToExcelSheet(sSheetName As String, sExcelPath As String, sAccessTable As String, sAccessDBPath As String)
Dim Conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim ExcelApp As New Excel.Application
Dim WorkBookObj As Workbook
Dim SheetObj As Worksheet

'数据库路径为程序路径
Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & sAccessDBPath
Conn.Open
rs.Open "Select * From " & sAccessTable, Conn, adOpenKeyset, adLockOptimistic, adCmdText
'==========================================================================

'Excel路径为程序路径
Set WorkBookObj = ExcelApp.Workbooks.Open(App.Path & sExcelPath)
Set SheetObj = WorkBookObj.Worksheets(i)
'========================================
SheetObj.Range("A1").CopyFromRecordset rs
SheetObj.Name = sSheetName


Set SheetObj = Nothing
WorkBookObj.Save
WorkBookObj.Close
Set WorkBookObj = Nothing
ExcelApp.Quit
Set ExcelApp = Nothing
rs.Close
Set rs = Nothing
Conn.Close
Set Conn = Nothing
End Sub

但是不如手动导出好用,因为无法导出ACCESS中TABLE的列名

所以特求各位,看是否有能直接调用ACCESS该功能的模块,
或是有更好的办法,不胜感激。。_^^_
cosio 2004-12-16
  • 打赏
  • 举报
回复
把你的程序贴出来了!

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧