咨询 VBA ADOvba读取excel 一行的几个问题

页面导航:
→ 正文内容 ADO.NET 读取EXCEL
ADO.NET 读取EXCEL的实现代码((c#))
经常需要在数据库与Execl之间互导数据。net时代,ADO.NET可以使用使用Microsoft.Jet.OleDb访问访问Excel,网上已经有很多类似的资源,最典型也是最简单的可能如下:(asp.net环境)
// 连接字符串 代码如下:// 连接字符串&&&&&&&&&&& &&&&&&&& string xlsPath = Server.MapPath("~/app_data/somefile.xls"); // 绝对物理路径&&&&&&&& string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +&&&&&&&&&&&&&&&&&&&&&&&& "Extended Properties=Excel 8.0;" + &&&&&&&&&&&&&&&&&&&&&&&& "data source=" + xlsP&&&&&&&& // 查询语句&&&&&&&& string sql = "SELECT * FROM [Sheet1$]";&&&&&&&& DataSet ds = new DataSet();&&&&&&&& OleDbDataAdapter da = new OleDbDataAdapter(sql, connStr);&&&&&&&& da.Fill(ds);&&& // 填充DataSet&&&&&&& &&&&&&&& // 在这里对DataSet中的数据进行操作&&&&&& &&&&&&&& // 输出,绑定数据&&&&&&&& GridView1.DataSource = ds.Tables[0]; &&&&&&&& GridView1.DataBind();很简单吧?!一切就像操作数据库一样,只是需要注意的是:1。数据提供程序使用Jet,同时需要指定Extended Properties 关键字设置 Excel 特定的属性,不同版本的Excel对应不同的属性值:用于 Extended Properties 值的有效 Excel 版本。 对于 Microsoft Excel 8.0 (97)、9.0 (2000) 和 10.0 (2002) 工作簿,请使用 Excel 8.0。
对于 Microsoft Excel 5.0 和 7.0 (95) 工作簿,请使用 Excel 5.0。
对于 Microsoft Excel 4.0 工作簿,请使用 Excel 4.0。
对于 Microsoft Excel 3.0 工作簿,请使用 Excel 3.0。
ref:/library/chs/default.asp?url=/library/CHS/dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp
2。数据源路径使用物理绝对路径(同Access)
3。如何引用表名?对 Excel 工作簿中表(或范围)的有效引用。 若要引用完全使用的工作表的范围,请指定后面跟有美元符号的工作表名称。例如:
select * from [Sheet1$]若要引用工作表上的特定地址范围,请指定后面跟有美元符号和该范围的工作表名称。例如:
select * from [Sheet1$A1:B10]若要引用指定的范围,请使用该范围的名称。例如:
select * from [MyNamedRange]ref:/library/chs/default.asp?url=/library/CHS/dv_vbcode/html/vbtskcodeexamplereadingexceldataintodataset.asp说明:可以引用Excel 工作簿中的三种对象:• 整张工作表:[Sheet1$] ,Sheet1 就是工作表的名称• 工作表上的命名单元格区域:[MyNamedRange] (不需要指定工作表,因为整个xls中命名区域只能唯一)XLS命名方法:选中单元格范围》插入》名称》定义• 工作表上的未命名单元格区域 :[Sheet1$A1:B10](在关系数据库提供的各种对象中(表、视图、存储过程等),Excel 数据源仅提供相当于表的对象,它由指定工作簿中的工作表和定义的命名区域组成。命名区域被视为“表”,而工作表被视为“系统表”)
注意:•必须使用[](方括号),否将报:FROM 子句语法错误•必须跟$(美元符号),否则报:Microsoft Jet 数据库引擎找不到对象'Sheet2′。请确定对象是否存在,并正确地写出它的名称和路径。•如果工作表名称不对,或者不存在,将报:‘Sheet2$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。•在 如何在 Visual Basic 或 VBA 中使用 ADO 来处理 Excel 数据 中提到可以使用~ 和 ‘(波浪线和单引号)代替[],使用ADO。NET测试没有成功,报:FROM 子句语法错误•当引用工作表明名([Sheet1$])时,数据提供程序认为数据表从指定工作表上最左上方的非空单元格开始。比如,工作表从第 3 行,C 列开始,第3行,C列之前以及第1、2行全为空,则只会显示从第3行,C列开始的数据;以最后表最大范围内的非空单元结束;•因此,如需要精确读取范围,应该使用命名区域 [NamedRange],或者指定地址:[Sheet1$A1:C10]
4。如何引用列名?•根据默认连接字符串中,数据提供程序会将有效区域内的第一行作为列名,如果此行某单元格为空则用F1、F2表示,其中序数,跟单元格的位置一致,从1开始;•如果希望第一行作为数据显示,而非列名,可以在连接串的 Extended Properties 属性指定:HDR=NO默认值为:HDR=NO 格式如下:
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Extended Properties=\"Excel 8.0;HDR=NO\";" + "data source=" + xlsP注意: Excel 8.0;HDR=NO 需要使用双引号(这里的反斜扛,是C#中的转义)
ref:ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/WD_ADONET/html/745c5f95-2f02-d51a7ec2490.htm中 《连接Excel》节(说明:在我自己的MSDN中,它的例子使用了两个双引号是错的,测试没有通过,原文这样说的:
注意,Extended Properties 所需的双引号必须还要加双引号。)
在这种情况下,所有的列名都是以F开头,然后跟索引,从F1开始,F2,F3。。。。。。。
5。为什么有效单元格数据不显示出来?出现这种情况的可能原因是,默认连接中,数据提供程序根据前面单元格推断后续单元个的数据类型。可以通过 Extended Properties 中指定 IMEX=1
“IMEX=1;”通知驱动程序始终将“互混”数据列作为文本读取ref:同4
PS:在baidu这个问题的时候,有网友说,将每个单元都加上引号,这固然是格方案,但是工作量何其大啊,又不零活,庆幸自己找到”治本药方“
more ref:如何在 Visual Basic 或 VBA 中使用 ADO 来处理 Excel 数据http://dotnet.aspx.cc/ShowDetail.aspx?id=C673E2CD-3F1E--D69B894A0599
应用程序经常需要与Excel进行数据交互,以上阐述了基于ADO.NET读取Excel的基本方法与技巧。现在要介绍是如何动态的读取Excel数据,这里的动态指的是事先不知道Excel文件的是什么样的结构,或者无法预测,比如一张.xls文件有多少张sheet,而且每张sheet的结构可能都不一样等等。其实我们可以通过获取Excel的“架构信息”来动态的构造查询语句。这里的“架构信息”与数据库领域的“数据库架构信息”意义相同(也称“元数据”),对于整个数据库,这些“元数据”通常包括数据库或可通过数据库中的数据源、表和视图得到的目录以及所存在的约束等;而对于数据库中的表,架构信息包括主键、列和自动编号字段等。在上文中提到
在关系数据库提供的各种对象中(表、视图、存储过程等),Excel 数据源仅提供相当于表的对象,它由指定工作簿中的工作表和定义的命名区域组成。命名区域被视为“表”,而工作表被视为“系统表”)
这里我们将Excel也当作一个“数据库”来对待,然后利用OleDbConnection.GetOleDbSchemaTable 方法要获取所需的架构信息,该方法获取的架构信息与ANSI SQl-92是兼容的:
注意:对于那些不熟悉 OLE DB 架构行集的人而言,它们基本上是由 ANSI SQL-92定义的数据库构造的标准化架构。每个架构行集具有为指定构造提供定义元数据的一组列(称作 .NET文档中的“限制列”)。这样,如果请求架构信息(例如,列的架构信息或排序规则的架构信息),则您会明确知道可以得到哪种类型的数据。如果希望了解更多信息,请访问 Appendix B:Schema Rowsets。ref:/china/msdn/library/office/office/odatanet2.mspx?mfr=true
以下是读取Excel文件内“表”定义元数据,并显示出来的的程序片断: 代码如下:// 读取Excel数据,填充DataSet&&&&&&&& // 连接字符串&&&&&&&&&&& &&&&&&&& string xlsPath = Server.MapPath("~/app_data/somefile.xls");&&&&&&&& string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +&"Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";" + // 指定扩展属性为&Microsoft Excel 8.0 (97) 9.0 ( (2002),并且第一行作为数据返回,且以文本方式读取&&&&&&&&&&&&&&&&&&&&&&&& "data source=" + xlsP&&&&&&&& string sql_F = "SELECT * FROM [{0}]";&&&&&&&& OleDbConnection conn =&&&&&&&& OleDbDataAdapter da =&&&&&&&& DataTable tblSchema =&&&&&&&& IList&string& tblNames =&&&&&&&& // 初始化连接,并打开&&&&&&&& conn = new OleDbConnection(connStr);&&&&&&&& conn.Open();&&&&&&&& // 获取数据源的表定义元数据&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& //tblSchema = conn.GetSchema("Tables");&&&&&&&& tblSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });&&&&&&&& GridView1.DataSource = tblS&&&&&&&& GridView1.DataBind();&&&&&&&& // 关闭连接&&&&&&&& conn.Close();&GetOleDbSchemaTable 方法的详细说明可以参考:&/zh-CN/library/system.data.oledb.oledbconnection.getoledbschematable.aspx&接着是一段利用“架构信息”动态读取Excel内部定义的表单或者命名区域的程序片断:&&&&&&&& // 读取Excel数据,填充DataSet&&&&&&&& // 连接字符串&&&&&&&&&&& &&&&&&&& string xlsPath = Server.MapPath("~/app_data/somefile.xls");&&&&&&&& string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" +&"Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\";" + // 指定扩展属性为&Microsoft Excel 8.0 (97) 9.0 ( (2002),并且第一行作为数据返回,且以文本方式读取&&&&&&&&&&&&&&&&&&&&&&&& "data source=" + xlsP&&&&&&&& string sql_F = "SELECT * FROM [{0}]";&&&&&&&& OleDbConnection conn =&&&&&&&& OleDbDataAdapter da =&&&&&&&& DataTable tblSchema =&&&&&&&& IList&string& tblNames =&&&&&&&& // 初始化连接,并打开&&&&&&&& conn = new OleDbConnection(connStr);&&&&&&&& conn.Open();&&&&&&&& // 获取数据源的表定义元数据&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&& //tblSchema = conn.GetSchema("Tables");&&&&&&&& tblSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });&&&&&&&& //GridView1.DataSource = tblS&&&&&&&& //GridView1.DataBind();&&&&&&&& // 关闭连接&&&&&&&& //conn.Close();&&&&&&&& tblNames = new List&string&();&&&&&&&& foreach (DataRow row in tblSchema.Rows) {&&&&&&&&&&&& tblNames.Add((string)row["TABLE_NAME"]); // 读取表名&&&&&&&& }&&&&&&&& // 初始化适配器&&&&&&&& da = new OleDbDataAdapter();&&&&&&&& // 准备数据,导入DataSet&&&&&&&& DataSet ds = new DataSet();&&&&&&&& foreach (string tblName in tblNames) {&&&&&&&&&&&& da.SelectCommand = new OleDbCommand(String.Format(sql_F, tblName), conn);&&&&&&&&&&&& try {&&&&&&&&&&&&&&&& da.Fill(ds, tblName);&&&&&&&&&&&& }&&&&&&&&&&&& catch {&&&&&&&&&&&&&&&& // 关闭连接&&&&&&&&&&&&&&&& if (conn.State == ConnectionState.Open) {&&&&&&&&&&&&&&&&&&&& conn.Close();&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&& }&&&&&&&& // 关闭连接&&&&&&&& if (conn.State == ConnectionState.Open) {&&&&&&&&&&&& conn.Close();&&&&&&&& }&&&&&&&& // 对导入DataSet的每张sheet进行处理&&&&&&& &&&&&&&& // 这里仅做显示&&&&&&&& GridView1.DataSource = ds.Tables[0];&&&&&&&& GridView1.DataBind();&&&&&&&& GridView2.DataSource = ds.Tables[1];&&&&&&&& GridView2.DataBind();这里我们就不需要对SELEC 语句进行“硬编码”,可以根据需要动态的构造FROM 字句的“表名”。
不仅可以,获取表明,还可以获取每张表内的字段名、字段类型等信息:
tblSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, null, null });
在ADO.nET1.x 时候只有OleDb提供了GetOleDbSchemaTable方法,而SqlClient或者OrcaleClient没有对应的方法,因为对应数据库已经提供了类似功能的存储过程或者系统表供应用程序访问,比如对于Sql Server:
SELECT *RMATION_SCHEMA.COLUMNSWHERE TABLE_NAME = N'Customers'
而在ADO.NET 2.0中每个xxxConnenction都实现了基类mon.DbConnection的 GetSchemal 方法来获取数据源的架构信息。/zh-cn/library/mon.dbconnection.getschema.aspx
//---------------------------------------------------------------------------//IMEX 正_法string connExcel = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath +";Extended Properties='Excel 8.0;IMEX=1;'"; //HDR=NO;IMEX=1 代码如下:using S&using System.D&using System.C&using System.W&using System.Web.S&using System.Web.UI;&using System.Web.UI.WebC&using System.Web.UI.WebControls.WebP&using System.Web.UI.HtmlC&using System.Data.SqlC&using System.Data.OleDb;&public partial class _Default : System.Web.UI.Page &{&&&& protected void Page_Load(object sender, EventArgs e)&&&& {&&&& }&&&& protected void Button1_Click(object sender, EventArgs e)&&&& {&&&&&&&& string strconn = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"D:/last.xls" + ";Extended Properties=Excel 8.0;"; //HDR=no";//IMEX=1&&&&&&&& OleDbConnection conn = new OleDbConnection(strconn);&&&&&&&& DataSet myset = new DataSet();&&&&&&&& try&&&&&&&& {&&&&&&&&&&&& conn.Open();&&&&&&&&&&&&& string mysql = "select * from [Sheet1$] ";//where chs && ''&&&&&&&&&&&& OleDbDataAdapter aper = new OleDbDataAdapter(mysql, conn);&&&&&&&&&&&& myset.Tables.Clear();&&&&&&&&&&&& aper.Fill(myset, "book");&&&&&&&&&&&& conn.Close();&&&&&&&&&&&& GridView1.DataSource = myset.Tables["book"];&&&&&&&&&&&& GridView1.DataBind();&&&&&&&& }&&&&&&&& catch (Exception ex)&&&&&&&& {&&&&&&&&&&&& conn.Close();&&&&&&&&&&&& this.lb_msg.Text = ex.M&&&&&&&&&&&&&&&&&&&&&&&& // return ex.M&&&&&&&& }&&&& }&}
您可能感兴趣的文章:
上一篇:下一篇:
最 近 更 新
热 点 排 行【频道】EXCEL 函数 表格基础 教程
Excel2007基础生产视频教程-使用规划求解处理取料问题
播放:1760
Excel2007基础函数视频教程-认识Excel2007宏表函数
播放:1628
Excel2007基础函数视频教程-无序条件下的分类计算
播放:1419
Excel2007基础函数视频教程-我也会几个文本函数
播放:1408
Excel2007基础函数视频教程-学用IF函数表达较复杂逻辑
播放:8580
Excel2007图表基础视频教程-在Excel图表中使用图形对
播放:1815
Excel2007图表基础视频教程-在Excel中利用趋势线进行
播放:1045
Excel2007图表基础视频教程-使用Excel创建直示式比对
播放:1353
Excel2007图表基础视频教程-使用Excel创建瀑布图
播放:1727
Excel2007图表基础视频教程-使用Excel创建信息式图表
播放:1056
Excel2007图表基础视频教程-Excel中的表样式图表2
Excel2007图表基础视频教程-Excel中的表样式图表
Excel VBA技巧解密视频教程-输入时逐步提示信息的实现
播放:1463
Excel VBA技巧解密视频教程-在VBA中使用类创建控件数
播放:1144
Excel VBA技巧解密视频教程-在Excel VBA中的ADO应用二
Excel VBA技巧解密视频教程-在Excel VBA中的ADO应用技
播放:1144
Excel VBA技巧视频教程-制作并应用Excel2010加载宏
播放:9625
Excel VBA技巧解密视频教程-制作带自杀功能的工作簿
播放:2002
Excel VBA技巧解密视频教程-使用VBA灵活控制Shape
播放:1100
Excel VBA技巧解密视频教程-Excel2007VBA新特性及创建
分享给站外好友
页面地址:
FLASH地址:
HTML代码:
通用代码:
可以让视频在手机、平板电脑上播放!
举报此视频包含不当内容:
请填写你要举报的内容,标明举报内容所在地时段,将有助于我们更及时的处理举报内容。感谢您对PPS的支持!
广告和欺诈
触犯我的版权
你可以把视频下载到不同的设备
使用电脑飞速下载轻易收藏喜欢的视频
使用苹果设备支持iPhone、iPad高清视频亦可离线观看
使用Android设备支持手机、平板高清视频亦可离线观看
拍下二维码,视频随身看
用PPS影音IOS/Android版扫描二维码,在您的移动设备上继续观看视频,也可以分享给您的好友。
Excel VBA技巧解密视频教程-在Excel VBA中的ADO应用二
手机没装PPS影音?
频道信息:
EXCEL 函数 表格基础 教程
播放:66.36万
视频仅是一些碎片化的知识点,如果大伙要想得到大幅的提升,还是报个班吧。毕最少在那里等得到基本的系统化全面深入的理解知识。
注:数据来自爱奇艺、PPS全平台
Excel VBA技巧解密视频教程-在Excel VBA中的ADO应用二
上传时间:12个月前
上 传 者:dpio163
所属频道:EXCEL 函数 表格基础 教程
上 传 自:
分&&&&&&类:教育
暂无相关内容
视频简介:Excel VBA技巧解密视频教程-在Excel VBA中的ADO应用二
现在可以用QQ账号直接发表评论,分享给我的好友
大家都在看
互联网药品信息服务许可证:
互联网医疗保健信息服务许可证:
Copyright&2005 - 2014 PPStream, Inc. All Rights Reserved各位前辈好
我想把上年库存结余写入库存表中,另外在数据库中“库存表”已经建好了,只是每条记录的“数量”字段为0,现在我想把上年的库存结余,通过vba更新库存表内相对应品名的数量,求代码啊,学习学习,我也找了一些方法,不是很明白,万分感谢,另:求注释多一点,感谢感谢
11:02 上传
下载次数: 3
25.21 KB, 下载次数: 3
在线时间29 小时经验10 威望0 性别男最后登录注册时间阅读权限10UID2446133积分10帖子精华0分享0
EH新人, 积分 10, 距离下一级还需 10 积分
积分排行3000+帖子精华0微积分0
已解决。写好更新的sql语句,用 conn.Execute sql执行就可以了
sql=&UPDATE customers SET &
&&sql=sql & &companyname='& & Request.Form(&companyname&) & &',&
&&sql=sql & &contactname='& & Request.Form(&contactname&) & &',&
&&sql=sql & &address='& & Request.Form(&address&) & &',&
&&sql=sql & &city='& & Request.Form(&city&) & &',&
&&sql=sql & &postalcode='& & Request.Form(&postalcode&) & &',&
&&sql=sql & &country='& & Request.Form(&country&) & &'&
&&sql=sql & & WHERE customerID='& & cid & &'&
&&on error resume next
&&conn.Execute sql
- 注意:自起,未完成邮箱认证的会员将无法发帖!如何完成邮箱认证?请点击下方“查看”。
关注我们,与您相约微信公众平台!
Copyright 1999 - 2017 Excel Home. All Rights Reserved.本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!
Powered by
本站特聘法律顾问:徐怀玉律师 李志群律师 &&计算机应用频道
当前位置: >
VBA读取Excel工作表数据方法探索
作者:秩名。 TAGS:方法,探索,数据,工作,读取,引用,
&& 导读::可以方便的利用VBA读取Excel工作薄中的数据。经常需要引用其它工作薄中的数据。 关键词:VBA,工作薄,数据读取 引言 工作中,使用Excel进行数据处理时,经常需要引用其它工作薄中的数据工作薄,用VBA编程能帮助用户在不打开工作薄或看似不打开工作薄的情况下取得其它工作薄中的数据,下面有几种方法可以实现,假设当前工作表:&F:\test.xls&,第一个工作表名称为&sheet1&,其它工作薄如:&F:\源数据.xls&,第一个工作表名称为&销售数据&。读取引用工作薄的工作表数据范围A1:E20。在当前工作表中利用&控件工具箱&,制作命令按钮名称和下面过程名对应。   1 使用公式引用工作簿中的工作表数据   Private Sub btn1 ()   Dim wshpath As String   wshpath=&'& &ThisWorkbook.Path &&\[源数据.xls]销售数据'!&   With Sheet1.Range(&A1:E20&)'激活当前工作表A1:E20区域   .FormulaR1C1=&=& &wshpath &&RC&'在A1:E20区域写入对其它工作表单元格引用   .Value=.Value'将该区域的公式转换为数值   End With   End Sub   此方法适合应用于需要引用的数据不是太多的情况中心。   2 使用Excel对象的方法引用工作簿中的工作表数据   Private Sub btn2()   Dim FilePath As String   Dim i,j As Long   Dim sBrow,sErow,sBCol,sEcol As Long'源表的行数,列数   Dim tBrow,tBcol As Long '设置当前工作表开始行、列数   sBrow=1   sErow=20   sBCol=1   sEcol=5   tBrow=1   tBcol=1   FilePath=ThisWorkbook.Path &&\源数据.xls&   Set xlapp=CreateObject(&Excel.Application&)'创建EXCEL对象   Set xlbook=xlapp.Workbooks.Open(FilePath)'创建工件簿对象   Set xlsheet=xlbook.Worksheets(1)'创建工作表对象   xlapp.Visible=False   '以下将数据复制到当前工作表中   For i=sBrow To sErow   For j=sBCol To sEcol   ThisWorkbook.Sheets(1).Cells(tBrow+i-1,tBcol+j-1)=xlsheet.Cells(i,j)   Next   Next   '关闭对象代码省略   End Sub   该方法编程应用灵活,较为简单工作薄,可以修改添加代码对其它多个工作薄进行读取数据。   3 使用ExecuteExcel4Macro方法引用工作簿中的工作表数据   Private Sub btn3()   Dim FilePath As String   Dim i,j,sBrow,sErow,sBCol,sEcol,tBrow,tBcol As Long[ ]   sBrow=1   sErow=20   sBCol=1   sEcol=5   tBrow=1   tBcol=1   FilePath=ThisWorkbook.Path &&\[源数据.xls]&   For i=sBrow To sErow   For j=sBCol To sEcol   Sheets(1).Cells(tBrow+i-1,tBcol+j-1)=ExecuteExcel4Macro(&'&&FilePath &&报名表& &&'!r& & i& &c& &j)   Next   Next   End Sub   4 使用ADO的方式引用工作簿中的工作表数据。   在编写代码之前打开Visual Basic编辑器,单击&工具&菜单-&&引用&命令,在打开的引用对话框中,选中&MicrosoftActiveX Data Objects 2.0 Library&,点击确定,就可利用ADO来读取Excel工作薄中数据。   Private Sub btn4()   Dim Sql As String   Dim i,nR As Integer   Dim Cnn As ADODB.Connection   Dim rs As ADODB.Recordset   With Sheet1   .Cells.Clear   Set Cnn=New ADODB.Connection   '以下用ADO连接并打开被应用工作薄   With Cnn   .Provider=&microsoft.jet.oledb.4.0&   .ConnectionString=&Extended Properties=Excel 8.0;& &&Data Source=& &ThisWorkbook.Path &&\源数据&   .Open   End With   '以下筛选表中数据生成记录集,第一行默认为字段名   Set rs=New ADODB.Recordset   Sql=&select * from [销售数据$]&   rs.Open Sql,Cnn,adOpenKeyset,adLockOptimistic   '以下将字段名放入首行,将数据写入工作表   For i=0 To rs.Fields.Count-1   .Cells(1,i+1)=rs.Fields(i).Name   Next   nR=.Range(&A65536&).End(xlUp).Row   .Range(&A& &nR+1).CopyFromRecordset rs   End With   rs.Close   Cnn.Close   Set rs=Nothing   Set Cnn=Nothing   End Sub   结束语:   通过以上几种方法工作薄,可以方便的利用VBA读取Excel工作薄中的数据,其中一、二种方法在打开Excel工作薄时使其隐藏而使用户看不见,三、四种方法真正意义上没有打开工作薄而读取其数据。在实际VBA应用中,需要读取更多的工作薄,用户则可添加对文件夹及文件的操作代码完成,从而提高工作效率。
参考文献: [1]John Walkenbach著.盖江南,王勇等译.Excel 2003高级VBA编程宝典[M].电子工业出版社,2005. [2]Excel Home.Excel应用大全[M].人民邮电出版社,2008. &
&&&& 下一篇:

我要回帖

更多关于 ado 读取excel 的文章

 

随机推荐