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-2 10:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:开发帮助和教程
楼主大才啊~~~~

TA的精华主题

TA的得分主题

发表于 2009-6-2 10:54 | 显示全部楼层
太好了,真实解决了好久以来困惑我的问题,非常感谢!

TA的精华主题

TA的得分主题

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

回复 1273楼 yuanzhuping 的帖子

太谢谢了,我好好学习

TA的精华主题

TA的得分主题

发表于 2009-6-2 14:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
大家好才是真的好,你好,我好,大家好

TA的精华主题

TA的得分主题

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

第10部分 文件操作

技巧171         将数据写入文本文件
       在需要时可以将Excel中的数据写入到文本文件中,有以下方法可以实现。
171-1        使用Print # 语句
       使用Print # 语句将数据写入文本文件中,如下面的代码所示。
  1. #001  Sub PrintText()
  2. #002      Dim myFileName As String
  3. #003      Dim myDataAr() As Variant
  4. #004      Dim myStr As String
  5. #005      Dim myRow As Integer
  6. #006      Dim myCol As Integer
  7. #007      Dim i As Integer
  8. #008      Dim j As Integer
  9. #009      On Error Resume Next
  10. #010      myFileName = "工资表.txt"
  11. #011      Kill ThisWorkbook.Path & "" & myFileName
  12. #012      With Sheet1
  13. #013          myRow = .Range("A65536").End(xlUp).Row
  14. #014          myCol = .Range("IV1").End(xlToLeft).Column
  15. #015          ReDim myDataAr(1 To myRow, 1 To myCol)
  16. #016          For i = 1 To myRow
  17. #017              For j = 1 To myCol
  18. #018                  myDataAr(i, j) = .Cells(i, j).Value
  19. #019              Next
  20. #020          Next
  21. #021          Open ThisWorkbook.Path & "" & myFileName For Output As #1
  22. #022          For i = 1 To UBound(myDataAr, 1)
  23. #023              myStr = ""
  24. #024              For j = 1 To UBound(myDataAr, 2)
  25. #025                  myStr = myStr & CStr(myDataAr(i, j)) & ","
  26. #026              Next
  27. #027              myStr = Left(myStr, (Len(myStr) - 1))
  28. #028              Print #1, myStr
  29. #029          Next
  30. #030          Close #1
  31. #031      End With
  32. #032      MsgBox "文件保存成功!"
  33. #033  End Sub
复制代码
代码解析:
       PrintText过程将工作表中数据写入到文本文件“工资表.txt”中。
       第11行代码使用Kill方法删除同一目录中可能存在的同名文本文件。
       第13、14行使用单元格的End属性取得工作表中已使用数据的行、列号,关于End属性请参阅技巧3 。
       第15行代码重新定义动态数组myDataAr的大小。关于动态数组请参阅技巧169-3。
       第16行到第20行代码将工作表数据赋给数组myDataAr。
       第21行代码使用Open语句打开文本文件以完成对文本文件的输入。关于Open语句请参阅技巧170-2。
       第22行到第29行代码使用Print #语句将数组myDataAr中的所有元素写入到文本文件中。Print #语句将格式化显示的数据写入顺序文件中,语法如下:
       Print #filenumber, [outputlist]
       Filenumber是必需的,任何有效的文件号。
       第30行代码Close语句关闭文本文件。

171-2        另存为文本文件
       使用SaveAs方法将工作表另存为文本文件,如下面的代码所示。
  1. #001  Sub SaveText()
  2. #002      Dim myFileName As String
  3. #003      myFileName = "工资表.txt"
  4. #004      On Error Resume Next
  5. #005      Kill ThisWorkbook.Path & "" & myFileName
  6. #006      Application.ScreenUpdating = False
  7. #007      Worksheets("Sheet1").Copy
  8. #008      ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path _
  9. #009          & "" & myFileName, _
  10. #010          FileFormat:=xlCSV
  11. #011      MsgBox "文件保存成功!"
  12. #012      ActiveWorkbook.Close SaveChanges:=False
  13. #013      Application.ScreenUpdating = True
  14. #014  End Sub
复制代码
代码解析:
       SaveText过程将工作表“Sheet1”保存为文本文件。
       第4、5行代码使用Kill方法删除同一目录中可能存在的同名文本文件。
       第7行代码使用Copy方法复制工作表“Sheet1”。
       第8行到第10行代码使用SaveAs方法将文件保存为文本文件。应用于Workbook对象的SaveAs方法保存对不同文件中的工作表的更改,语法如下:
expression.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AccessMode, ConflictResolution, AddToMru, TextCodepage, TextVisualLayout, Local)
       其中参数Filename表示要保存的文件名。可包含完整路径。如果不指定路径,Microsoft Excel 将文件保存到当前文件夹中。
       其中参数FileFormat指定保存文件时使用的文件格式,在本例中指定为xlCSV即保存为文本文件。
       第12行代码使用Close方法关闭活动工作簿。

170-3        使用OpenText方法
       使用OpenText方法载入一个文本文件并将其作为包含单个工作表的工作簿处理,如下面的代码所示。
  1. #001  Sub OpenText()
  2. #002      Dim myFileName As String
  3. #003      myFileName = "工资表.txt"
  4. #004      Sheet1.UsedRange.ClearContents
  5. #005      Workbooks.OpenText _
  6. #006          Filename:=ThisWorkbook.Path & "" & myFileName, _
  7. #007          StartRow:=1, DataType:=xlDelimited, Comma:=True
  8. #008      With ActiveWorkbook
  9. #009          With .Sheets("工资表").Range("A1").CurrentRegion
  10. #010              ThisWorkbook.Sheets("Sheet1").Range("A1").Resize(.Rows.Count, .Columns.Count).Value = .Value
  11. #011          End With
  12. #012          .Close False
  13. #013      End With
  14. #014  End Sub
复制代码
代码解析:
       OpenText过程使用OpenText方法载入“工资表.txt”文本文件并将其数据写入到工作表中。
       第5行到第7行代码使用OpenText方法载入“工资表.txt”文本文件。OpenText方法载入一个文本文件,并将其作为包含单个工作表的工作簿进行分列处理,然后在此工作表中放入经过分列处理的文本文件数据,语法如下:
expression.OpenText(FileName, Origin, StartRow, DataType, TextQualifier, ConsecutiveDelimiter, Tab, Semicolon, Comma, Space, Other, OtherChar, FieldInfo, TextVisualLayout, DecimalSeparator, ThousandsSeparator, TrailingMinusNumbers, Local)
       其中参数FileName是必需的,指定要载入并作分列处理的文件名称。
       参数StartRow是可选的,作分列处理的起始行号,默认值为 1。
       参数DataType是可选的,在文件中指定数据的列格式。
       参数Comma是可选的,如果该值为True,则将分隔符设为逗号。
       其他参数请参阅VBA中的帮助文档。
       第9行到第11行代码将作为工作表打开的文本文件中的数据写入到工作表中。
       第13行代码使用Close方法关闭打开的文本文件。

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

技巧171 将数据写入文本文件.rar

31.09 KB, 下载次数: 1021

TA的精华主题

TA的得分主题

发表于 2009-6-2 16:20 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-6-2 16:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
版主总结到一起了,奉献

TA的精华主题

TA的得分主题

发表于 2009-6-2 17:21 | 显示全部楼层
感谢袁袁老师无私奉献精神,一定好好学习,不枉你的辛勤劳动。

TA的精华主题

TA的得分主题

发表于 2009-6-2 21:39 | 显示全部楼层
yuanzhuping:
      太谢谢你了,提供了这么好的资料。
   敬礼!

TA的精华主题

TA的得分主题

发表于 2009-6-2 21:50 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-3-29 17:20 , Processed in 0.065966 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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