VB将excel导入access
如何将excel里的数据批量导入ACCESS

下面是对EXECL的基础操作说明:Set xlApp = CreateObject("Excel.Application")‘激活EXCEL应用程序xlApp.Visible = False ‘隐藏EXCEL应用程序窗口Set xlBook = xlApp.Workbooks.Open(strDestination)‘打开工作簿,strDestination为一个EXCEL报表文件Set xlSheet = xlBook.Worksheets(1)‘设定工作表1、定义EXCEL对象变量dim x as excel.application2、VB中,启动EXCELset x=createobject("excel.application")3、新建一个EXCEL工作簿x.workbooks.add4、选定工作表1set xsheet=xbook.worksheets(1)5、指定单元格,并赋值xsheet.cell(1,1)=ret.fields(0)6、指定EXCEL列宽xsheet.column(1).columnwidth=107、RANGE()函数,选定单元格区域range(cells(1,1),cells(10,20))8、设置EXCEL字体xsheet.range(cells(1,1),cells(10,20))="黑体"9、设置EXCEL为粗体xsheet.range(cells(1,1),cells(10,20)).fontbold=true10、设置EXCEL表格边框xsheet.range(cells(1,1),cells(10,20)).borders.linestyle=xlcontinuous 11、运行时,显示EXCEL或隐藏EXCELx.visible=true12、保存工作簿xbook save13、退出EXCELx.quit14、交还控制权给EXCELset x=nothing15、打印EXCEL表x.active.window.selectedsheets.printout copies=numcopies16、退出EXCEL时,不出现保存提示。
如何将Excel的数据写入到Accees?

如何将Excel的数据写入到Accees?Aceess 是微软出品的桌面关系型数据库,也是在Office 大礼包中的套件之一,和大名鼎鼎的 Excel 不同;Access 主要承担了数据存储和SQL 查询的功能,需要的数据技能要更为结构化与进阶;总体来说,Excel 的强项在于灵活的分析数据,它的基本对象的单元格Cell;而 Access 的基本对象是Record,是一种结构化的数据形式,可以方便的存储及查询数十万级别的数据。
下面和大家分享一下,如何使用 VBA 将 Excel 和 Access 进行连接,并将数据写到 Access 数据库中;01 引入 Microsoft ActiveX Data Objects 6.0 Library在菜单栏工具->引入->找到Microsoft ActiveX Data Objects 6.0 Library,勾选引入02 在 Access 新建一个表•打开 Access 创建-表•右键左侧表名称 -> 设计视图•重命名表•设置需要的字段•右键打开的表名称 -> 保存•结果如图,我们需要记住表,以及字段名称03 在 Excel VBA 内写连接代码Sub Demo()Dim conn As ADODB.ConnectionSet conn = New ADODB.Connectiondatapath = ThisWorkbook.Path & "\Demo.accdb"With conn.Provider = "microsoft.ace.oledb.12.0".Open datapathEnd WithMsgBox "连接数据库成功!"End Sub我们需要先声明数据库连接对象ADODB.Connection;然后设置数据库路径:ThisWorkbook.Path是表明是当前文件夹路径,然后使用连字符&连接"\Demo.accdb"形成完整的数据库文件路径;点击运行,连接成功:04 在 Excel VBA 内写 SQL 代码我们可以将工作表的B1和B2单元格的内容,作为变量传入SQL语句我们需要向数据库写入数据,需要使用 SQL 代码:Insert Into语句Sql = "Insert Into Demo(姓名,年龄) Values('" & Sheet1.Cells(2, 1).Value & "','" & Sheet1.Cells(2, 2).Value & "')"其中第一段字符串,使用连字符将变量连接起来时,中间有个英文逗号'05 完整示例代码Sub Demo()Dim conn As ADODB.ConnectionSet conn = New ADODB.Connectiondatapath = ThisWorkbook.Path & "\Demo.accdb"With conn.Provider = "microsoft.ace.oledb.12.0".Open datapathEnd With'MsgBox "连接数据库成功!"Sql = "Insert Into Demo(姓名,年龄) Values('" & Sheet1.Cells(2, 1).Value & "','" & Sheet1.Cells(2, 2).Value & "')"conn.Execute (Sql)End Sub今天的教程,主要学习了:如何从Excel连接Access数据库,并写入数据;大家都学会了吗?。
使用VBA实现Excel与Access数据的交互

使用VBA实现Excel与Access数据的交互提要:本文介绍了如何使用VBA(Visual Basic for Applications)编程语言来实现Excel和Access之间的数据交互。
VBA是一种内置于Microsoft Office套件中的编程语言,它可以用于自动化各种任务,包括数据的导入和导出。
通过使用VBA,可以轻松地将Excel和Access的数据进行传输和共享,实现数据的有效管理和分析。
引言:在现代业务环境中,数据的处理和分析变得越来越重要。
Excel和Access都是常用的数据处理工具,它们的结合使用可以增强数据的管理和分析功能。
然而,手动将数据从Excel复制粘贴到Access中是一项费时费力的任务。
通过使用VBA编程语言,我们可以轻松地实现Excel和Access之间的数据交互,将数据的导入和导出自动化,提高工作效率。
一、连接Excel和Access数据库:要实现Excel和Access之间的数据交互,首先需要建立它们之间的连接。
以下是建立连接的步骤:1. 在Excel中,按下“Alt + F11”打开VBA编辑器。
2. 在VBA编辑器中,选择“工具”>“引用”,勾选“Microsoft ActiveX Data Objects X.X Library”。
3. 在Excel的VBA编辑器中,插入一个新的模块。
4. 在模块中编写以下代码来建立与Access数据库的连接:```vbaDim conn As ObjectSet conn = CreateObject("ADODB.Connection")conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:\database.accdb"```在以上代码中,通过“CreateObject”函数创建了一个名为“conn”的连接对象,并通过“Open”方法打开了一个Access数据库文件(database.accdb)。
VBA将Excel中的数据导入数据库

将Excel中的数据导入到Access中,前提是在Access中的表已经建好。
dim conndim conn2set conn=CreateObject("ADODB.Connection")conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database PassWord=;Data Source=c:\book1.mdb"set conn2=CreateObject("ADODB.Connection")conn2.Open "Provider=Microsoft.Jet.OLEDB.4.0;Jet OLEDB:Database Password=;Extended properties=Excel 5.0;Data Source=c:\book1.xls"sql = "SELECT * FROM [Sheet1$]"set rs = conn2.execute(sql)while not rs.eofsql = "insert into xxx([a],[b],[c],[d]) values('"& fixsql(rs(0)) &"','"& fixsql(rs(1)) &"','"& fixsql(rs(2)) &"','"& fixsql(rs(3)) &"')" conn.execute(sql)rs.movenextwendconn.closeset conn = nothingconn2.closeset conn2 = nothingfunction fixsql(str)dim newstrnewstr = strif isnull(newstr) thennewstr = ""elsenewstr = replace(newstr,"'","''")end iffixsql = newstrend function导入到Sql Server数据库中时,如果Excel文件和数据库不在同一台服务器上时,请参考上面的代码。
VB对Excel与Access的操作

pactDatabase Yml, Mbml
On error goto 0 Kill Ywjm
‘删除
Name Mbwjm As Ywjm ‘重命名
Exit Sub
Cw:
On Error GoTo 0
aa = MsgBox("请先关闭数据库文件", vbOKOnly, "提示")
End Sub
3、查询:
select * from 表名 where 字段=值 order by 字段
where:条件。可使用> < = >= <= <> like between
例:ID>5 and F_LR like ‘%中国%’
‘序号大于 5 并且内容中包含“中国”
order by:排序
例:order by ID desc ‘按序号降序排列
Adorst.Open P_lssj, Adocon, adOpenStatic, adLockReadOnly, adCmdTable P_lssjjlzs = Adorst.RecordCount '记录总数
If P_lssjjlzs > 0 Then
P_sjqsj = Adorst!f_rq
'第一条记录日期字段内容
cxtjselecttop10iddesc当数据库中数据太大时排序需要花很长时间此时不如先读数据取得数据总量然后关闭记录集再设置合适的条件打开记录集4查找
其中详细介绍 VB 对 Excel 与 Access 的操作,还是 Access 与 Excel 记录的相互导入。希望对你有用。
写入数据库,查询、分析、打印。找了很多的资料,现作一回顾总结,本篇主要写 vb 控制 excel 及 access。(以下均为本人的一些心得,写的不对的,请各位师傅指正。希望本文能对和我一样菜的朋 友有一些帮助。)
VB+Access系统中实现Excel和AcceSS数据库相互导入

3 主 窗体
主要 包 括 两 个单 选 按 钮 (pin 、o t n )如 图 1 示 。 o t 1 pi 2 o o 所
L rr 系统 库 ia b y P bi f sS r g 保 存 Ac e s文件 名 u l nA ti c n cs P bi f 1A t n 保 存 E c l 件 名 u l n sS r g c i xe文 P bi f c u t t g r 存 A c s u l o n I e e 保 cn As n c e s数 据 库 表 的 字段 数
P bi f lo n sItg r 存 E c l 据 库 表 的 字 段 数 u l u t e e 保 cnc A n xe数
Pu l on w b i c n As Ne ADODB. o n c i n c C n et o
声 明 一个 md b数 据 库 的 连 接
c n . e P o ie =M i r s f .e . L o n Op n“ r vd r c o o tJ t O EDB. . 4 O: Da a S u c =” f t o r e & n& ; e s s e u i n o a s “ P r itS c r y I f =F le t
V Ac es B+ cs 系统中实现 E c l Ac es xe 和 cs 数据库相 互导入
畅 育超
摘 要 : 以 “ 籍 管 理 数 据 库 ” 为 例 ,介 绍 V Ace 学 B+ cs s系统 中 利 用 A DO 记 录 集 实 现 E cl x e 和 A cs 数 据 库 相 互 导 入 的 程 序 设 计 方 法 。 ces
VB6.0
vb6.0中如何把EXCEL表格中的数据导入到access库中不知道VB和VBA有什么差别啊以下是我学习VBA的代码,看看吧Public Sub 将数据库记录数据全部导入到excel 工作表ADO之一() Dim myData As String, myTable As String, SQL As String Dim cnn As ADODB.Connection Dim rs As ADODB.Recordset Dim i As Integer '清除工作表的全部数据ActiveSheet.Cells.Clear myData = ThisWorkbook.Path & "\学生成绩管理.mdb" '指定数据库myTable = "期末成绩" '指定数据表'建立与数据库的连接Set cnn = New ADODB.Connection With cnn .Provider = "microsoft.jet.oledb.4.0" .Open myData End With '查询数据表SQL = "select * from " & myTable & " order by 性别" Set rs = New ADODB.Recordset rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic '显示查询结果MsgBox "数据库中的记录数为:" & rs.RecordCount '复制记录数据If rs.RecordCount > 0 Then '复制字段名For i = 1 To rs.Fields.Count Cells(1, i) = rs.Fields(i - 1).Name Next i '设置字段名字体为加粗并居中对齐With Range(Cells(1, 1), Cells(1, rs.Fields.Count)) .Font.Bold = True .HorizontalAlignment = xlCenter End With '复制全部数据Range("A2").CopyFromRecordset rs '设置工作表格式ActiveSheet.Cells.Font.Size = 10 ActiveSheet.Columns.AutoFit End If '关闭记录集及数据库连接,并释放变量rs.Close cnn.Close Set rs = Nothing Set cnn = Nothing '·recordset对象的copyfromrecordset方法: '用于将一个ADO或DAO的recordset对象的内容复制到工作表中,复制的起始位置在指定区域的左上角。
用VBA实现excel与access数据库交互
⽤VBA实现excel与access数据库交互1、将access中数据导⼊excelPublic Sub ImportData()Dim mydata As String, mytable As String, SQL As StringDim cnn As ADODB.ConnectionDim rs As ADODB.RecordsetActiveSheet.Cells.Clearmydata = ThisWorkbook.Path & "\成绩管理.mdb" '指定数据库mytable = "考试成绩" '指定'建⽴与数据库的连接Set cnn = New ADODB.ConnectionWith cnn.Provider = "microsoft.jet.oledb.4.0".Open mydataEnd WithSQL = "select 班级,avg(数学) as 数学平均,avg(语⽂) as 语⽂平均," _& "avg(物理) as 物理平均,avg(化学) as 化学平均,avg(英语) as 英语平均, " _& "avg(体育) as 体育平均,avg(总分) as 总分平均 " _& "from " & mytable & " group by 班级"Set rs = New ADODB.Recordsetrs.Open SQL, cnn, adOpenKeyset, adLockOptimistic'复制字段名For i = 1 To rs.Fields.CountCells(1, i) = rs.Fields(i - 1).NameNext i'复制全部数据Range("A2").CopyFromRecordset rsrs.Closecnn.CloseSet rs = NothingSet cnn = NothingEnd Sub2、将excel数据导⼊accessSub 把Excel数据插⼊数据库中()'*******************************************'时间:2010-06-28'作者:bengdeng'功能:把当前⼯作表的数据增加到在同⼀⽬录下表数据库中'注意:要在⼯具/引⽤中引⽤microsoft activex date objects x.x' 其中x.x为版本号,可能会因为你安装的office的版本不同⽽不同,本例引⽤了2.5版'发布:'*******************************************Dim conn As ADODB.ConnectionDim WN As StringDim TableName As StringDim sSql As StringDim tStr As String'数据库名,请⾃⾏修改,路径与当前在同⼀⽬录WN = "表.mdb"'数据库的表名与当前⼯作表名⼀致TableName = Set conn = New ADODB.Connectionconn.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0;" & _"Extended Properties=Excel 8.0;" & _"Data Source=" & ThisWorkbook.Path & "\" & conn.OpenIf conn.State = adStateOpen ThensSql = "Insert Into [;DataBase=" & ActiveWorkbook.Path & "\" & WN & "]." & TableName & " Select * From [" & & "$]" conn.Execute sSqlMsgBox "成功把数据插⼊到“" & TableName & "”中!", , ""conn.CloseEnd IfSet conn = NothingEnd Sub。
如何将excel中的数据用vba代码存入access文件中
如何将excel中的数据用vba代码存入access文件中?excel中的日期供应商货物名称单价数量金额9月10日联想公司笔记本3500 2 7000将表中的内容存储到D:\备份.mdb中,如果mdb中有其他记录,将记录存入以前的记录后面。
每天都要将当天采购的记录录入并保存到mdb文件中。
谢谢以下是我用了实现从Excel导数据进ACCESS的代码,你参考一下,应该就可以做出来了:(Excel和Access两个文件放一个文件夹下)Public Sub 客户正常供价批量维护()If Cells(4, 6) = "" ThenMsgBox "请先选择需要维护价格的系统!", vbInformationCells(4, 6).SelectExit SubElseDim i As Integer, j As Integer, k As Integer, sht As Worksheet 'i,j,k为整数变量;sht 为excel工作表对象变量,指向某一工作表Dim cn As New ADODB.Connection '定义数据链接对象,保存连接数据库信息;请先添加ADO引用Dim rs As New ADODB.Recordset '定义记录集对象,保存数据表Dim strCn As String, strSQL As String '字符串变量Dim mdbFile As StringOn Error GoTo add_errmdbFile = ActiveWorkbook.Path & "\DY_DATA.mdb"strCn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mdbFile '定义数据库链接字符串cn.Open strCn '与数据库建立连接,如果成功,返回连接对象cnSet rs = New ADODB.Recordsetrs.Open "dbl直营客户正常供价表", cn, adOpenKeyset, adLockOptimistick = Cells(4, 8) + 8For i = 9 To kIf Cells(i, 7) = "" ThenElsers.AddNewrs(1) = Cells(i, 2)rs(2) = Cells(i, 7)rs(3) = Cells(i, 8)rs.UpdateCells(i, 7) = ""Cells(i, 8) = ""End IfNextMsgBox "数据记录添加成功!", vbInformationCells(4, 6).SelectActiveWorkbook.RefreshAlladd_exit:Exit SubEnd Ifadd_err:MsgBox Err() & vbCrLf & Error()Resume add_exitEnd Sub追问vba中excel的单元格用cells(1,1),cells(1,2),cells(2,1),cells(2,2),cells(i,j)表示,在vba中access对应的单元格如何表示这些?。
利用VB将EXCEL中的数据导入ACCESS
Dim extend_str As StringDim execl_cnn As New ADODB.ConnectionDim execl_rst As New ADODB.RecordsetDim execl_count_rst As New ADODB.Recordset '纪录数量Dim execl_field_rst As New ADODB.RecordsetDim execl_strconn As StringDim execl_strcmd As StringDim execl_count_str As StringDim insertStr As String'操作oracle数据库的记录集Dim rst As ADODB.RecordsetCommonDialog1.ShowOpenextend_str = Right(CommonDialog1.FileName, 3)If (extend_str = "xls") Thenexecl_cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _"Data Source=" & CommonDialog1.FileName & _";Extended Properties=Excel 8.0;"ElseIf (extend_str = "dbf") Thenexecl_cnn.ConnectionString = "Provider=MSDASQL.1;Driver=Microsoft Visual FoxproDriver;SourceType=DBF;DBQ=" & getDir(CommonDialog1.FileName)execl_cnn.OpenEnd IfIf (extend_str = "xls") Thenexecl_strcmd = "SELECT * from `Sheet1$` "execl_count_str = "SELECT count(*) from `Sheet1$` "execl_field_rst.Open execl_count_str, execl_cnnIf (execl_field_rst.Fields(0).Value = 0) Thenexecl_strcmd = "SELECT * from [" & getFileNoExt(getfile(CommonDialog1.FileName)) & "$] "execl_count_str = "SELECT count(*) from [" & getFileNoExt(getfile(CommonDialog1.FileName)) & "$] " End Ifexecl_field_rst.CloseElseIf (extend_str = "dbf") Thenexecl_strcmd = "SELECT * from " & CommonDialog1.FileNameexecl_count_str = "SELECT count(*) from " & CommonDialog1.FileName End Ifexecl_rst.Open execl_strcmd, execl_cnnexecl_count_rst.Open execl_count_str, execl_cnnIf (CommonDialog1.FileName <> "") Then'进度条设置ProgressBar1.Min = 0ProgressBar1.max = execl_count_rst.Fields(0).ValueIf (execl_rst.RecordCount) Then '如果有记录If (Option1.Value) Then '如果是仪器总库If (execl_rst.Fields.Count = 8) ThenSet rst = yg_gain_table_recordset("yg_device")execl_rst.MoveFirstDo While (Not execl_rst.EOF)rst.AddNewrst.Fields(0).Value = yg_getNextId("yg_device_id")rst.Fields(1).Value = execl_rst.Fields(0).Value & ""rst.Fields(2).Value = execl_rst.Fields(1).Value & ""rst.Fields(3).Value = execl_rst.Fields(2).Value & ""rst.Fields(4).Value = execl_rst.Fields(3).Value & ""rst.Fields(5).Value = execl_rst.Fields(4).Value & ""rst.Fields(6).Value = execl_rst.Fields(5).Value & ""rst.Fields(7).Value = execl_rst.Fields(6).Value & ""rst.Fields(8).Value = execl_rst.Fields(7).Value & ""rst.Updateexecl_rst.MoveNextProgressBar1.Value = ProgressBar1.Value + 1DoEventsLoopyg_free_recordset rstElseMsgBox "结构不一致"Exit SubEnd IfEnd IfIf (Option2.Value) Then '如果是外借仪器If (execl_rst.Fields.Count = 12) ThenSet rst = yg_gain_table_recordset("yg_out_device")execl_rst.MoveFirstDo While (Not execl_rst.EOF)rst.AddNewrst.Fields(0).Value = yg_getNextId("yg_out_device_id") rst.Fields(1).Value = execl_rst.Fields(0).Value & "" rst.Fields(2).Value = execl_rst.Fields(1).Value & "" rst.Fields(3).Value = execl_rst.Fields(2).Value & "" rst.Fields(4).Value = execl_rst.Fields(3).Value & "" rst.Fields(5).Value = execl_rst.Fields(4).Value & "" rst.Fields(6).Value = execl_rst.Fields(5).Value & "" rst.Fields(7).Value = execl_rst.Fields(6).Value & "" rst.Fields(8).Value = execl_rst.Fields(7).Value & "" rst.Fields(9).Value = execl_rst.Fields(8).Value & "" rst.Fields(10).Value = execl_rst.Fields(9).Value & "" rst.Fields(11).Value = execl_rst.Fields(10).Value & "" rst.Fields(12).Value = execl_rst.Fields(11).Value & "" rst.Updateexecl_rst.MoveNextProgressBar1.Value = ProgressBar1.Value + 1 DoEventsLoopyg_free_recordset rstElseMsgBox "结构不一致"Exit SubEnd IfEnd If。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB将excel导入access
15
[ 标签:vb,excel,xsl ]
在网上看到你有做过这方面的东西,想请问你一下,如果将相同目录下的excel 导入access啊,有源码吗?谢谢
下一个天亮回答:2 人气:2 解决时间:2011-04-21 18:30
满意答案
好评率:0%
Dim cn As Connection
Dim rs As Recordset
Dim sql As String
Dim n As Long, m As Long
Set cn = New Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & App.Path & "\数据库名;"
sql = "SELECT * From [EXCEL内表名$] IN " & Chr(34) & App.Path & "\EXCEL 表名.xls" & Chr(34) & Chr(32) & Chr(34) & "EXCEL 8.0;" & Chr(34)
Debug.Print sql
Set rs = cn.Execute(sql)
While Not rs.EOF
sql = "insert into 数据库表名(id,num,dt)(ID为字符型,NUM为数字型,DT为日期型)
values ('" & rs.Fields(0) & "'," & Val(rs.Fields(1)) & ",#" & rs.Fields(2) & "#)"
cn.Execute sql, n
m = m + n
rs.MoveNext
Wend
Set rs = Nothing
Set cn = Nothing。