在Excel中应用VBA批量导入数据

在Excel中应用VBA批量导入数据

ID:38747402

大小:46.50 KB

页数:6页

时间:2019-06-18

在Excel中应用VBA批量导入数据_第1页
在Excel中应用VBA批量导入数据_第2页
在Excel中应用VBA批量导入数据_第3页
在Excel中应用VBA批量导入数据_第4页
在Excel中应用VBA批量导入数据_第5页
资源描述:

《在Excel中应用VBA批量导入数据》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、在Excel中应用VBA批量导入数据1.      问题由来当一个漂亮MM向你请教如何录制并修改一个宏,把她每次的实验数据(几十个数据文件)导入Excel时,你感慨道:“很多Excel专家会录制一个宏来解决问题,然后每次使用的时候修改代码并粘贴到需要的地方,对于一个合格的程序员,这是最要命的事情。”漂亮MM打断并告诉你,她不是程序员,也不想做程序员,然后命令你开始工作。2.      通过录制宏导入数据对于这个无法拒绝的MM,你只好垂头丧气的开始面对要解决的问题,想着MM几年后博士毕业,年薪至少5万,干个3、5年,年薪10万,还有项目提成,平时吃饭

2、、打车、买可乐都可以报销,当然不会像你放弃了自己的专业,做了一个为生计奔波的程序员。数据文件是仪器生成一系列文本格式的数据文件,格式完全一样,目的是要把每个数据文件导入到Excel中作为一条记录,也就是一行。那么,你想,可以用VBA写一个程序,然后定位到需要的位置,读入需要的信息就可以了[①]。你打开Excel,打开VBA编辑器,准备开始写代码。“开始录宏吧”,MM提醒了心不在焉的你,你沉默了0.1秒,默念了一下VBA的信条:“万不得已不要写代码,尽量使用Office的功能”。于是你启动Excel打开这个文本文件,按照弹出的文本文件导入向导对话框的

3、步骤,使用固定列宽导入了需要的数据。数据包括2部分,第一部分是文件头,包括一些数据信息,后面是按行放置的数据,包括结果和误差,MM要的是后边的数据,要把每行的数据和误差放置到相邻的两列(见下图)。图1数据文件部分和需要在Excel中的结果数据 明白了问题,一切就好办了,打开Excel,然后开始录制宏:首先打开文件,通过导入文本文件向导,读入数据,将特定单元格的数据拷贝到一个目标Excel文件中,然后关闭这个文本文件,停止录制宏。录制的宏很长,大概包括2部分。第一部分是一句打开文件,格式转换的操作,后边一部分是激活不同的文件,拷贝和粘贴不同的Rang

4、e。你删除掉刚才拷贝进来的数据,运行了一下这个宏,很好,需要的数据进来了。3.      修改宏导入成批数据MM提醒你,这个她也能做到,但怎么样把所有的数据文件都导入进来。你看看她带来的文件,文件名是“r20041124001357.txt”、“r20041124001358.txt”、“r20041124001359.txt”、“r20041124001360.txt”之类,大概是时间加序列吧。你想,嗯,写一个循环就可以了,你打开了刚才录制的宏,检查了一下MM带来的文件,文件名最后2位从46到89,你可以写一个i从1到44的循环,把读入文件部分的

5、文件名改为:"r200411240013"&(i+45)&".txt"把粘贴目的地(range)表示行数的数字用i替换。OK,你按下了执行按钮,每次关闭文件的时候,有一个讨厌的是否保存文件的对话框跳出来,其他好像一切正常,还好,点击了44次鼠标后[②],MM得到了需要的数据。4.      修改VBA代码实现一个可通用的宏4.1.   指定要导入的文件当MM向你请教如何更改循环以导入不同的文件的数据时,你程序员的劣根性又开始冲动,你想通过一个打开文件对话框来指定需要的文件。你觉得实现应该不复杂,通过一个打开文件对话框,选择一系列文件,然后将文件全路

6、径存入一个集合或数组,然后循环读出这些文件就可以了。你先创建了一个窗体,然后放置了一个按钮,将CommonDialog控件引入工程,添加到窗体,在按钮的点击事件里加入如下代码:    DimstrFilesAsString,iAsLong      WithCommonDialog1       .Flags=&H200&Or&H80000   '可以选择多个文件       .ShowOpen              If.FileName<>""Then           strFiles=.FileName       EndIf   E

7、ndWith    '分割返回值,返回值为以ASCII码为0的分割的字符串      '字符串第一个为路径,之后为单个文件名   Files=Split(strFiles,Chr(0))                Fori=1ToUBound(Files)Step1       Files(i)=Files(0)&""&Files(i)             '连接路径和文件名,组成文件数组   Nexti 代码不多,最后的文件列表保存在Files数组里。因为第一次使用CommonDialog控件打开多个文件,查找出多个文件的分割符号是AS

8、CII码为0的字符费了你不少时间。你开始查了文档,没有得到信息;将FileName属性用Msgbox输出只有路径,在调试状

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。