ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: yuanzhuping

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2009-6-1 14:31 | 显示全部楼层
本帖已被收录到知识树中,索引项:开发帮助和教程
已经下载了!非常感谢版主的工作!致敬!!!

TA的精华主题

TA的得分主题

发表于 2009-6-1 14:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
学习中……
对楼主无比敬仰!

TA的精华主题

TA的得分主题

发表于 2009-6-1 15:38 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-6-1 16:14 | 显示全部楼层
楼主,您是一个无私奉献的人,向您致敬

TA的精华主题

TA的得分主题

发表于 2009-6-1 16:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感謝分享
對於我這個初學VBA的來說
真是很好的參考資料

TA的精华主题

TA的得分主题

发表于 2009-6-1 17:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
楼主 很感谢

TA的精华主题

TA的得分主题

发表于 2009-6-1 21:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢!斑竹真是好人一个

TA的精华主题

TA的得分主题

发表于 2009-6-1 22:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢版主,辛苦了!

TA的精华主题

TA的得分主题

发表于 2009-6-1 22:50 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-2 07:11 | 显示全部楼层

第10部分 文件操作

技巧170         导入文本文件
       在实际应用中,我们经常从软件中将数据导出为文本文件,在需要将这些文本文件导入到Excel中时可以使用以下的方法。
170-1        使用查询表导入
       在Excel VBA中可以使用Add方法新建查询表后导入文本文件,如下面的代码所示。
  1. #001  Sub AddQuery()
  2. #002      Sheet1.UsedRange.ClearContents
  3. #003      With Sheet1.QueryTables.Add( _
  4. #004          Connection:="TEXT;" & ThisWorkbook.Path & "\工资表.txt", _
  5. #005          Destination:=Range("A1"))
  6. #006          .TextFilePlatform = 936
  7. #007          .TextFileCommaDelimiter = True
  8. #008          .Refresh
  9. #009      End With
  10. #010  End Sub
复制代码
代码解析:
       AddQuery过程使用QueryTable对象的Add方法新建查询表后将文本文件“工资表.txt”的内容导入到工作表中。
       应用于QueryTable对象的Add方法新建一个查询表,返回QueryTable对象,该对象代表新建的查询表,语法如下:
       expression.Add(Connection, Destination, Sql)
       参数expression是必需的,返回一个QueryTables对象。
       参数Connection是必需的,查询表的数据源。如果数据源是文本文件,是“TEXT;<文本文件路径和名称>”形式的字符串,其他数据源请参阅帮助。
       参数Destination是必需的,Range类型,查询表目标区域左上角单元格用于放置生成的查询表的区域。目标区域必须在包含expression 指定的QueryTables对象的工作表上。
       参数Sql是可选的,在ODBC数据源上运行的SQL查询字符串,当将QueryTable对象、文本文件、或是ADO或DAO Recordset对象指定为数据源时不能使用该参数。
       第3行到第5行代码在工作表中建立对位于同一目录中的“工资表.txt”文本文件的查询,并将查询结果放置到工作表中。
       第6行代码设置导入的文本文件的原始格式,QueryTables对象的TextFilePlatform属性返回或设置正向查询表中导入的文本文件的原始格式,默认值是在“文本导入向导”的“文件原始格式”选项中的当前设置。
       第7行代码设置文本文件导入查询表中时,是以逗号作为分隔符。
       第8行代码使用Refresh方法更新外部数据区域,应用于QueryTable对象的Refresh方法更新外部数据区域,语法如下:
       expression.Refresh(BackgroundQuery)
       参数expression是必需的,返回一个QueryTable对象。
       参数BackgroundQuery是可选的的,只用于基于SQL查询结果的QueryTable。


170-2        使用Open 语句导入
       使用Open语句输入文本文件,如下面的代码所示。
  1. #001  Sub OpenText()
  2. #002      Dim Filename As String
  3. #003      Dim myText As String
  4. #004      Dim mArr() As String
  5. #005      Dim i As Integer
  6. #006      Dim j As Integer
  7. #007      Filename = ThisWorkbook.Path & "\工资表.txt"
  8. #008      j = 1
  9. #009      Sheet1.UsedRange.ClearContents
  10. #010      Open Filename For Input As #1
  11. #011      Do While Not EOF(1)
  12. #012          Line Input #1, myText
  13. #013          mArr = Split(myText, ",")
  14. #014          For i = 0 To UBound(mArr)
  15. #015              Sheet1.Cells(j, i + 1) = mArr(i)
  16. #016          Next
  17. #017          j = j + 1
  18. #018      Loop
  19. #019      Close #1
  20. #020  End Sub
复制代码
代码解析:
       OpenText过程使用Open语句将文本“工资表.txt”的内容输入到工作表中。
       第10行代码使用Open语句打开文本文件以完成对文本文件的输入。Open语句能够对文件输入/输出(I/O),语法如下:。
       Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]
       Pathname是必需的,指定文件名,该文件名可能还包括目录、文件夹及驱动器。
       mode是必需的,指定文件方式,有Append、Binary、Input、Output、或Random方式。如果未指定方式,则以Random访问方式打开文件。
       Access是可选的,说明打开的文件可以进行的操作,有Read、Write、或Read Write操作。
       lock是可选的,说明限定于其它进程打开的文件的操作,有Shared、Lock Read、Lock Write、和Lock Read Write操作。
       filenumber是必需的,一个有效的文件号,范围在 1 到 511 之间。使用FreeFile函数可得到下一个可用的文件号。
       reclength是可选的,小于或等于 32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。
       第11行代码使用Do...Loop 语句重复执行第12行到第17行代码,直到文本文件的结尾。EOF函数返回一个Integer,它返回Boolean值True,表明已经到达为Random或顺序Input打开的文件结尾,语法如下:
       EOF(filenumber)
       参数filenumber是必需的,是一个Integer,包含任何有效的文件号。
       第12行代码使用Line Input # 语句读入一行数据并将其赋予变量myText。Line Input # 语句从已打开的顺序文件中读出一行并将它分配给String变量,语法如下:
       Line Input #filenumber, varname
       Filenumber是必需的,任何有效的文件号。
       varnamer是必需的,有效的Variant或String变量名。
       第13行代码使用Split函数按逗号作为分隔符分开这行字符,赋值数组mArr。关于Split函数请参阅技巧169-2。
       第14行到第16行代码将数组mArr循环赋值给单元格,请参阅技巧169-1。
       第19行代码关闭文本文件。Close语句关闭Open语句所打开的输入/输出 (I/O) 文件,语法如下:
       Close [filenumberlist]
       参数filenumberlist是可选的,为一个或多个文件号,如省略则将关闭所有由Open语句打开的活动文件。

[ 本帖最后由 yuanzhuping 于 2009-6-4 07:48 编辑 ]

技巧170 导入文本文件.rar

43.28 KB, 下载次数: 1244

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-9-27 21:23 , Processed in 0.047546 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表