在EXCEL中操作ACCESS数据库(发表时间: 2007-3-3117:29:00)【评论】【打印】【字体:大中小】本文链接:http://blog.pfan/otot/24443.html 复制链接分享到: 0标签:excel vba access mdb为了便于管理手中的一大堆联系厂家的联系方式,我建立了一个ACCESS的数据库文件(TEST.MDB(表名:telephone)),把所有的客户信息存在数据库里面。
但是由于操作ACCESS数据库很不方便,我平时又习惯使用EXCEL,所以便想做一个EXCEL文件,能够与这个数据库文件连接起来,实现对数据的搜索、添加功能。
于是使用VBA。
当然首先是建立一个空白的EXCEL,并在里面针对数据库的各个字段标题建立标题。
如:打开VBA编辑器,添加三个模块:模块1:(从数据库取得全部数据,并显示到EXCEL文件中)Public Sub Getmdb()Dim cmd As StringDim oAss As Objectconnstr = "DBQ=D:\test.mdb;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"Set oAss = CreateObject("ADODB.connection")oAss.Open connstrcmd = "SELECT * FROM telephone ORDER BY id DESC"Set rs = oAss.Execute(cmd)btop = 4bleft = 2ast = "A" & btop & ":Z1000"Range(ast).ClearContentsDo While Not rs.EOFbtop = btop + 1Cells(btop, bleft + 2) = rs("姓名")Cells(btop, bleft + 3) = rs("公司")Cells(btop, bleft + 4) = rs("座机")Cells(btop, bleft + 5) = rs("手机")Cells(btop, bleft + 6) = rs("传真")rs.movenextLooprs.CloseWorksheets(1).addcomEnd Sub模块2:(从数据库中搜索符合指定名字或者公司名字的项目)Public Sub Serchmdb(ByVal so, si, st As String)Dim cmd As StringDim oAss As Objectconnstr = "DBQ=D:\test.mdb;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"Set oAss = CreateObject("ADODB.connection")oAss.Open connstrcmd = "SELECT * FROM telephone WHERE " + si + " like " + st + "%" + so + "%" + stOn Error GoTo 0Set rs = oAss.Execute(cmd)btop = 4bleft = 2btop = btop + 1ast = "A" & btop & ":Z1000"Range(ast).ClearContentsDo While Not rs.EOFCells(btop, bleft + 2) = rs("姓名")Cells(btop, bleft + 3) = rs("公司")Cells(btop, bleft + 4) = rs("座机")Cells(btop, bleft + 5) = rs("手机")Cells(btop, bleft + 6) = rs("传真")btop = btop + 1rs.movenextLooprs.CloseEnd Sub模块3:(网数据库中添加数据的函数)Public Sub Addmdb(ByVal atype, aname, acomp, ajob, aphone, amobil, afax, aemail As String)Dim cmd As StringDim oAss As Objectconnstr = "DBQ=D:\test.mdb;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"Set oAss = CreateObject("ADODB.connection")oAss.Open connstrcmd = "INSERT INTO telephone ( 姓名,公司,职位,座机,手机,传真)" cmd = cmd + " VALUES ('" + aname + "','" + acomp + "','" + ajob + "','" + aphone + "','" + amobil + "','" + afax + "'')"On Error GoTo 0oAss.Execute (cmd)End Sub在sheet1中添加以下内容:Dim so, si, st As StringPrivate Sub ComboBox1_Change()(在EXCEL页面中添加ComboBox1控件,用于指定搜索项目名称)aa = ComboBox1.ListIndexIf aa < 0 Thensi = ""Elsesi = ComboBox1.List(aa)End IfIf si <> "id" Thenst = "'"Elsest = ""End IfEnd SubPrivate Sub CommandAdd_Click()(在EXCEL页面中添加一个“添加项目”按钮,以及一系列的输入框,用于往数据库中添加内容)Dim aname, acomp, ajob, aphone, amobil, afax As Stringaname = TextName.Textacomp = TextComp.Textajob = TextJob.Textaphone = TextPhone.Textamobil = TextMobil.Textafax = TextFax.TextAddmdb atype, aname, acomp, ajob, aphone, amobil, afax, aemail Serchmdb acomp, "公司", "'"End IfEnd SubPrivate Sub CommandButton1_Click()(在EXCEL中添加搜索输入框和“搜索”按钮,点击后开始搜索数据库)so = TextBox1.TextIf si = "" Thensi = ComboBox1.List(0)End IfIf si <> "id" Thenst = "'"Elsest = ""End IfSerchmdb so, si, stEnd SubPublic Sub addcom()(ComboBox1控件里面原来是空白的,需要在页面打开的时候往里面放入搜索的项目名称)With ComboBox1.Clear.AddItem "姓名".AddItem "公司".AddItem "座机".AddItem "手机".AddItem "传真".Text = .List(0)si = .List(0)End WithEnd Sub在ThisWorkBook中,添加:Private Sub Workbook_Open()(在页面打开时执行以下函数,也就是往ComboBox1中添加内容)Sheet1.addcomEnd Sub至此,执行就完成所要的功能了,还差一点就是删除数据的功能,暂时很少用,就懒得编了。