Dim strconnt As String
Set connt = New ADODB.Connection
Dim rs As Object
Set rs = New ADODB.Recordset
Dim sevip, Db, user, pwd As String
'设服务器地址、所连数据,及登录用户密码
sevip = "****"
Db = "****"
user = "****"
pwd = "****"
strconnt = "DRIVER={Microsoft ODBC for Oracle}Password=appsUser ID=appsData Source=demo" '
connt.ConnectionString = strconnt
connt.Open
End Sub
vba是在最初组织旧版评教系统时就接触过的,但一直没研究过,也没仔细看过。只知道它可以整理数据。了解:
Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic 脚本。——来自百度百科
背景:
这次使用vba是因为:这次评教最初用的外网,连的万达238的数据库,但由于服务器出现问题,及时更换了局域网,连的校内207的库。之后万达服务器恢复后,又继续用外网。即:评教的数据在两个数据库中。这样对统计成绩就造成了一定的困难。——如何对成绩进行整合??
解决:
其实在这里用vba,就相当于把excel当成数据库,对其进行 *** 作。
我是先把成绩分别导出来,也就是有两份成绩单。每一份都不完整:有可能一个老师,一部分学生给的分在1个库中,另一部分的分在另一个库。这样统计出来成绩就是这样的:
数据库1:
数据库2:
vba代码:
'作者:赵寒-借鉴师哥旧版vba
'时间:2016-6-19 19:52:10
'过程说明:此过程为多个库中评教数据合并专用过程。主要功能是计算某教师、某课程在多个库中学生评分
' 的平均值。
'使用说明:处理的Excel必须是直接从评教系统导出的Excel,不得更换Excel中列的顺序。且需要将多个成绩单数据放在同一个excel进行整合统计。
Sub formatting()
Dim rowCount As Integer '总行数
Dim colCount As Integer '总列数
Dim tempRowCount As Integer '临时行数
Dim tempColumnCount As Integer '临时列数
Dim arrResult(100) As String '存放临时结果
Dim strSheetName As String '存放原工作表名
Dim sheetResult As Worksheet '自定义的工作表
Dim n
EXCEL vba 数据库连接
听语音
原创
|
浏览:7393
|
更新:2016-06-23 16:12
|
标签:EXCEL VBA
1
请点击输入图片描述
2
请点击输入图片描述
3
请点击输入图片描述
4
请点击输入图片描述
5
请点击输入图片描述
分步阅读
vba可以连接数据库并获取数据库的信息进行显示。
工具/原料
EXCEL2007
方法/步骤
1
首先在开发工具选项卡中插入一个表单控件(按钮)。
请点击输入图片描述
2
拖拽出按钮后会d出指定宏的窗口,这里我们新建宏。
请点击输入图片描述
3
新建按钮单击后,进入模块代码编辑界面,这里开始编辑代码。
请点击输入图片描述
4
如图,代码已经编辑好了,这里为大家解析一下代码的功能:
Dim cn As Object '定义数据链接对象 ,保存连接数据库信息
Dim rs As Object '定义记录集对象,保存数据表
Set cn = CreateObject("ADODB.Connection") '创建数据链接对象
Set rs = CreateObject("ADODB.RecordSet") '创建记录集对象,用于接收数据查询获得的结果集
Dim strCn As String, strSQL As String '字符串变量
strCn = "Provider=sqloledbServer=(local)Database=yourdatabasenameUid=saPwd=yourpassword" '定义数据库链接字符串
strSQL = "select bookname,price,author from book" '设置SQL语句
cn.Open strCn '打开连接
rs.Open strSQL, cn‘读取数据库中的数据
Dim i As Integer, j As Integer, sht As Worksheet 'i,j为整数变量;sht 为excel工作表对象变量,指向某一工作表
Set sht = ThisWorkbook.Worksheets("sheet1")
’循环读取数据并将数据显示到excel中
Do While Not rs.EOF '当数据指针未移到记录集末尾时,循环下列 *** 作
sht.Cells(i, 1) = rs("bookname") '把当前记录的字段1的值保存到sheet1工作表的第i行第1列
sht.Cells(i, 2) = rs("price") '把当前字段2的值保存到sheet1工作表的第i行第2列
sht.Cells(i, 3) = rs("author") '把当前字段2的值保存到sheet1工作表的第i行第2列
rs.MoveNext '把指针移向下一条记录
i = i + 1 'i加1,准备把下一记录相关字段的值保存到工作表的下一行
Loop '循环
rs.Close '关闭记录集,至此,程序将把某数据表的字段1和字段2保存在excel工作表sheet1的第1、2列,行数等于数据表的记录数
5
执行结果与数据库中结果对比
请点击输入图片描述
请点击输入图片描述
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)