ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

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

第10部分 文件操作

本帖已被收录到知识树中,索引项:开发帮助和教程
技巧180         使用WSH处理文件
180-10        导入文本文件
       如果需要从文本文件中导入数据,可以使用OpenTextFile方法,如下面的代码所示。
  1. #001  Sub OpenText()
  2. #002      Dim MyFile As Object
  3. #003      Dim mArr() As String
  4. #004      Dim j As Integer, i As Integer
  5. #005      j = 1
  6. #006      Sheet1.UsedRange.ClearContents
  7. #007      Set MyFile = CreateObject("Scripting.FileSystemObject") _
  8. #008          .OpenTextFile(ThisWorkbook.Path & "" & "工资表.txt")
  9. #009      Do While Not MyFile.AtEndOfStream
  10. #010          mArr = Split(MyFile.ReadLine, ",")
  11. #011          For i = 0 To UBound(mArr)
  12. #012              Sheet1.Cells(j, i + 1) = mArr(i)
  13. #013          Next
  14. #014          j = j + 1
  15. #015      Loop
  16. #016      MyFile.Close
  17. #017      Set MyFile = Nothing
  18. #018  End Sub
复制代码
代码解析:
       OpenText过程使用OpenTextFile方法打开示例文件所在文件夹中的“工资表.txt”文件并将数据导入到工作表中。
       第7、8行代码使用OpenTextFile方法打开文本文件。应用于FileSystemObject对象的OpenTextFile方法打开一个指定的文件并返回一个TextStream对象,该对象可用于对文件进行读操作或追加操作,语法如下:
       object.OpenTextFile(filename[, iomode[, create[, format]]])
       参数object是必需的,FileSystemObject对象的名字。
       参数filename是必需的,需要打开的文件名称。
       参数iomode是可选的,表示输入/输出方式,设置值如表格所示。
       Snap1.jpg
       参数create是可选的,它表示如果指定的参数filename不存在是否可以创建一个新文件。如果创建新文件,其值为True。若不创建文件其值为False。缺省值为False。
       参数format是可选的,打开文件的格式,设置值如表格所示。
       Snap2.jpg
       第9行代码开始对文本文件进行读操作。应用于TextStream对象的AtEndOfStream属性指示文件指针是否位于TextStream文件中的结尾,如果是返回True,否则返回False。
       第10行代码使用Split函数将逐行读取的字符串以逗号进行分隔后赋给数组mArr。关于Split函数请参阅技巧169-2。
       应用于TextStream对象的ReadLine方法从一个TextStream文件读取一整行(到换行符但不包括换行符)并返回得到的字符串,语法如下:
       object.ReadLine
       参数object是必需的,TextStream对象的名字。
       第11行到第14行代码将数组元素写入到工作表的单元格。
       第15行代码重新读取下一行数据。
       第16行使用Close方法关闭打开的文本文件。
       运行OpenText过程将“工资表.txt”文件的数据导入到工作表中。

180-10 导入文本文件.rar

18.58 KB, 下载次数: 916

TA的精华主题

TA的得分主题

发表于 2009-6-11 17:09 | 显示全部楼层
非常感谢!能让我这个新手学到这么好的资料。

TA的精华主题

TA的得分主题

发表于 2009-6-11 17:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-6-11 19:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-6-12 02:12 | 显示全部楼层

求救

怎么把文本框与某个特定的单元格的内容相连接啊

TA的精华主题

TA的得分主题

发表于 2009-6-12 09:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢感谢,太好了

TA的精华主题

TA的得分主题

发表于 2009-6-12 10:02 | 显示全部楼层
企盼楼主提供一些与ACCESS数据库方面的技巧。

TA的精华主题

TA的得分主题

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

第10部分 文件操作

技巧180         使用WSH处理文件
180-11        创建文本文件
     如果需要将工作表中的数据保存为文本文件,可以创建一个文本文件用于保存数据。
       使用CreateTextFile方法创建文本文件,如下面的代码所示。
  1. #001  Sub CreText()
  2. #002      Dim MyFile As Object
  3. #003      Dim myStr As String
  4. #004      Dim j As Integer, i As Integer
  5. #005      Set MyFile = CreateObject("Scripting.FileSystemObject") _
  6. #006          .CreateTextFile(ThisWorkbook.Path & "" & "工资表.txt", True)
  7. #007          For i = 1 To Range("A65536").End(xlUp).Row
  8. #008              myStr = ""
  9. #009              For j = 1 To Range("IV"& i).End(xlToLeft).Column
  10. #010                  myStr = myStr & Cells(i, j) & ","
  11. #011              Next
  12. #012              myStr = Left(myStr, (Len(myStr) - 1))
  13. #013              MyFile.WriteLine (myStr)
  14. #014          Next
  15. #015      MyFile.Close
  16. #016      Set MyFile = Nothing
  17. #017  End Sub
复制代码
代码解析:
       CreText过程使CreateTextFile方法创建一个指定名称的文本文件并将工作表数据写入到文件内。
       第5、6行代码使用CreateObject函数创建FileSystemObject对象并将该对象赋给变量MyFile后使用CreateTextFile方法创建一个指定名称的文本文件。
       应用于FileSystemObject对象的CreateTextFile方法创建一个指定的文件并且返回一个用于该文件读写的TextStream对象,语法如下:
       object.CreateTextFile(filename[, overwrite[, unicode]])
       参数object是必需的,FileSystemObject对象的名字。
       参数filename是必需的,需要创建的文件名称。
       参数overwrite是可选的,表示是否覆盖已存在文件。如果可被覆盖其值为True,其值为False时不能覆盖,如果省略,则已存在文件不能覆盖。
      参数unicode是可选的,表示文件是作为一个Unicode文件创建的还是作为一个ASCII文件创建的。如果作为一个Unicode文件创建,其值为True,作为一个ASCII 文件创建,其值为False,如果省略,则认为是一个ASCII文件。
       第7行代码逐行读取工作表数据。
      第8行代码清空字符串变量myStr的内容,用来保存下一行的数据。
      第9行代码遍历当前行的所有单元格。
       第10行代码将当前行的所有单元格保存到字符串变量myStr中并以逗号进行分隔。
       第12行代码去除保存在字符串变量myStr中当前行数据的最后一个逗号。
       第13行代码使用WriteLine方法将当前行数据写入到创建的文本文件。
       应用于TextStream对象的WriteLine方法写入一个指定的字符串和换行符到一个TextStream文件中,语法如下:
       object.WriteLine([string])
       参数object是必需的,TextStream对象的名字。
       参数string是可选的,要写入文件的正文。如果省略,写入一个换行符。
       第15行使用Close方法关闭打开的文本文件。
       还可以使用OpenTextFile方法创建文本文件,如下面的代码所示。
  1. #001  Sub OpenText()
  2. #002      Dim MyFile As Object
  3. #003      Dim myStr As String
  4. #004      Dim j As Integer, i As Integer
  5. #005      Set MyFile = CreateObject("Scripting.FileSystemObject") _
  6. #006          .OpenTextFile(ThisWorkbook.Path & "" & "工资表.txt", 8, True)
  7. #007          For i = 1 To Range("A65536").End(xlUp).Row
  8. #008              myStr = ""
  9. #009              For j = 1 To Range("IV" & i).End(xlToLeft).Column
  10. #010                  myStr = myStr & Cells(i, j) & ","
  11. #011              Next
  12. #012              myStr = Left(myStr, (Len(myStr) - 1))
  13. #013              MyFile.WriteLine (myStr)
  14. #014          Next
  15. #015      MyFile.Close
  16. #016      Set MyFile = Nothing
  17. #017  End Sub
复制代码
代码解析:
       OpenText过程使OpenTextFile方法创建一个指定名称的文本文件并将工作表数据写入到文件内。
       应用于FileSystemObject对象的OpenTextFile方法打开一个指定的文件并返回一个 TextStream对象,该对象可用于对文件进行读操作或追加操作,请参阅技巧180-10。
       示例中将OpenTextFile方法的iomode参数设置为8,打开文本文件后在文件的尾部进行追加操作;将create参数设置为True,如果指定的文本文件不存在则创建一个新文件。
      注意 如果重复运行OpenText过程将在文本文件中重复写入工作表数据,所以OpenTextFile方法更适用于对文本文件进行追加操作。
       OpenText过程的其他代码请参阅CreText过程的代码解析。
       运行CreText过程和OpenText过程将在示例所在的文件夹中创建一个名称为:“工资表”的文本文件并将工作表数据读入到文件内。

180-11 创建文本文件.rar

14.57 KB, 下载次数: 1237

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-6-12 11:30 | 显示全部楼层
原帖由 nowarmy 于 2009-6-12 10:02 发表
企盼楼主提供一些与ACCESS数据库方面的技巧。

惭愧,对于ADO、SQL我也是小白,只有学习的份,不敢献丑!

TA的精华主题

TA的得分主题

发表于 2009-6-12 12:42 | 显示全部楼层
刚接触这个论坛,说实话,我不喜欢灌水
但是我看到楼主这么经典的帖子,如果不回帖,实在是无法原谅自己
歇息!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 19:38 , Processed in 0.053007 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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