排行
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
中国数据库
向量数据库
时序数据库
实时数据库
搜索引擎
空间数据库
图数据库
数据仓库
大调查
2021年报告
2022年报告
年度数据库
2020年openGauss
2021年TiDB
2022年PolarDB
2023年OceanBase
首页
资讯
活动
大会
学习
课程中心
推荐优质内容、热门课程
学习路径
预设学习计划、达成学习目标
知识图谱
综合了解技术体系知识点
课程库
快速筛选、搜索相关课程
视频学习
专业视频分享技术知识
电子文档
快速搜索阅览技术文档
文档
问答
服务
智能助手小墨
关于数据库相关的问题,您都可以问我
数据库巡检平台
脚本采集百余项,在线智能分析总结
SQLRUN
在线数据库即时SQL运行平台
数据库实训平台
实操环境、开箱即用、一键连接
数据库管理服务
汇聚顶级数据库专家,具备多数据库运维能力
数据库百科
核心案例
行业报告
月度解读
大事记
产业图谱
我的订单
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
资讯
活动
大会
课程
文档
排行
问答
我的订单
首页
专家团队
智能助手
在线工具
SQLRUN
在线数据库即时SQL运行平台
数据库在线实训平台
实操环境、开箱即用、一键连接
AWR分析
上传AWR报告,查看分析结果
SQL格式化
快速格式化绝大多数SQL语句
SQL审核
审核编写规范,提升执行效率
PLSQL解密
解密超4000字符的PL/SQL语句
OraC函数
查询Oracle C 函数的详细描述
智能助手小墨
关于数据库相关的问题,您都可以问我
精选案例
新闻资讯
云市场
登录后可立即获得以下权益
免费培训课程
收藏优质文章
疑难问题解答
下载专业文档
签到免费抽奖
提升成长等级
立即登录
登录
注册
登录
注册
首页
专家团队
智能助手
精选案例
新闻资讯
云市场
微信扫码
复制链接
新浪微博
分享数说
采集到收藏夹
分享到数说
首页
/
ADO导出数据到工作表并设置表格式
ADO导出数据到工作表并设置表格式
VBA语言専攻
2022-06-28
158
【分享成果,随喜正能量】 古人说,不作
⽆
补之功,不为
⽆
益之事。但当下社会凡事多考虑自身的利弊,而非其行为的对错。。
《VBA数据库解决方案》教程是我推出的第二套教程,目前已经是第一版修订了。这套教程定位于中级,是学完字典后的另一个专题讲解。数据库是数据处理的利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作,教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册,八十四讲,今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是:ADO导出数据到工作表并设置表格式
第四十八讲 导出数据到工作表后,工作表格式的设置
大家好,今日我们讲VBA解数据库解决方案的第48讲内容:从数据库中导出数据到工作表后,工作表格式的设置。为什么要讲这讲内容呢?因为我们在操作数据库的时候,需要的是数据处理,往往从数据表中导出数据后,格式会发生变化,我们需要程序来处理。避免手工的操作。
1 应用场景的具体分析
如下面截图为导出数据的信息:
很显然,这份表格中我们需要的是出生日期应该是年月日格式的日期,同时我们的第一行最好是把字体换成粗体。这需要程序的自动实现。
我们可否能让程序自动实现呢?当我们深入的学习应用VBA后,需要这类问题的解决很多,为什么呢?因为我越来越不想手工处理了,最好程序给我一份最终的报表。好了,实现是没问题的。
2 导出数据到工作表后,工作表格式设置的代码及代码解读
下面看我给出的代码:
Sub mynzRecords_48() '第48讲 从数据库中导出数据到工作表后,工作表格式的设置
Dim cnADO, rsADO As Object
Dim strPath, strSQL, strTable As String
Set cnADO = CreateObject("ADODB.Connection")
Set rsADO = CreateObject("ADODB.Recordset")
strPath = ThisWorkbook.Path & "\mydata2.accdb"
strTable = "员工信息"
cnADO.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & strPath
strSQL = "SELECT * FROM " & strTable
rsADO.Open strSQL, cnADO, 1, 3
Worksheets("48").Select
Cells.ClearContents
For i = 0 To rsADO.Fields.Count - 1
ActiveSheet.Cells(1, i + 1) = rsADO.Fields(i).Name
Next i
GoTo 200
For i = 1 To rsADO.RecordCount
For j = 0 To rsADO.Fields.Count - 1
ActiveSheet.Cells(i + 1, j + 1) = rsADO.Fields(j)
Next j
rsADO.MoveNext
Next i
GoTo 100
200:
'设置工作表格式
With Range(Cells(1, 1), Cells(1, rsADO.Fields.Count))
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With
'复制全部数据
Range("A2").CopyFromRecordset rsADO
ActiveSheet.Columns(rsADO.Fields.Count).NumberFormat = "yyyy-mm-dd"
ActiveSheet.Columns.AutoFit
100:
rsADO.Close
cnADO.Close
Set cnADO = Nothing
Set rsADO = Nothing
End Sub
代码截图:
代码讲解:上述代码在执行过程中如果不执行GOTO 200,那么就是我在本文开始时讲到的那种结果了,当执行后GOTO 200 那么就有了格式的设置,下面我们看看都设置了哪些格式呢?
1) With Range(Cells(1, 1), Cells(1, rsADO.Fields.Count))
.Font.Bold = True
.HorizontalAlignment = xlCenter
End With
这段代码的执行,设置了表头要按粗体来显示。这样的报表会美观些,当然这只是我个人的观点,每个人和每个人不一样。读者也可以自己设置成自己喜欢的格式。
2) ActiveSheet.Columns(rsADO.Fields.Count).NumberFormat = "yyyy-mm-dd"
ActiveSheet.Columns.AutoFit
上面的代码就将日期列变成了类似于"yyyy-mm-dd" 这种年月日的格式了,并且自动调整。
下面看我们代码的运行结果了:
好了,非常的完美。
今日内容回向:
1 如何设置工作表的格式呢?
2 上述代码中如果设置其他的列该如何设置呢?
本讲内容参考程序文件:VBA与数据库操作(第二册).xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中:
【分享成果,随喜正能量】时光行走,不减锐气,总有那些梦想飞越沧海,总有那些力量支撑坚强,总有那些信心实践担当,总有那些脚步丈量远方。。
数据库
文章转载自
VBA语言専攻
,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
领墨值
有奖问卷
意见反馈
客服小墨