VBA常用技巧代码解析
函数请参阅技巧错误!未找到引用源。。
第14行到第16行代码将数组mArr循环赋值给单元格,请参阅技巧错误!未找到引用源。。
第19行代码关闭文本文件。Close语句关闭Open语句所打开的输入/输出 (I/O) 文件,语法如下:
Close [filenumberlist]
参数filenumberlist是可选的,为一个或多个文件号,如省略则将关闭所有由Open语句打开的活动文件。
1-3 使用OpenText方法
使用OpenText方法载入一个文本文件并将其作为包含单个工作表的工作簿处理,如下面的代码所示。
#001 Sub OpenText()
#002 Dim myFileName As String #003 myFileName = \工资表.txt\#004 Sheet1.UsedRange.ClearContents #005 Workbooks.OpenText _
#006 Filename:=ThisWorkbook.Path & \#007 StartRow:=1, DataType:=xlDelimited, Comma:=True #008 With ActiveWorkbook
#009 With .Sheets(\工资表\#010
ThisWorkbook.Sheets(\.Columns.Count).Value = .Value
#011 End With #012 .Close False #013 End With #014 End Sub
代码解析:
OpenText过程使用OpenText方法载入“工资表.txt”文本文件并将其数据写入到工作表中。
第5行到第7行代码使用OpenText方法载入“工资表.txt”文本文件。OpenText方法载入一个文本文件,并将其作为包含单个工作表的工作簿进行分列处理,然后在此工作表中
5
VBA常用技巧代码解析
放入经过分列处理的文本文件数据,语法如下:
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方法关闭打开的文本文件。
技巧2 将数据写入文本文件
在需要时可以将Excel中的数据写入到文本文件中,有以下方法可以实现。
2-1 使用Print # 语句
使用Print # 语句将数据写入文本文件中,如下面的代码所示。
#001 Sub PrintText()
#002 Dim myFileName As String #003 Dim myDataAr() As Variant #004 Dim myStr As String #005 Dim myRow As Integer #006 Dim myCol As Integer #007 Dim i As Integer #008 Dim j As Integer #009 On Error Resume Next
6
VBA常用技巧代码解析
#010 myFileName = \工资表.txt\
#011 Kill ThisWorkbook.Path & \#012 With Sheet1
#013 myRow = .Range(\#014 myCol = .Range(\#015 ReDim myDataAr(1 To myRow, 1 To myCol) #016 For i = 1 To myRow #017 For j = 1 To myCol
#018 myDataAr(i, j) = .Cells(i, j).Value #019 Next #020 Next
#021 Open ThisWorkbook.Path & \#022 For i = 1 To UBound(myDataAr, 1) #023 myStr = \
#024 For j = 1 To UBound(myDataAr, 2)
#025 myStr = myStr & CStr(myDataAr(i, j)) & \#026 Next
#027 myStr = Left(myStr, (Len(myStr) - 1)) #028 Print #1, myStr #029 Next #030 Close #1 #031 End With
#032 MsgBox \文件保存成功!\#033 End Sub
代码解析:
PrintText过程将工作表中数据写入到文本文件“工资表.txt”中。 第11行代码使用Kill方法删除同一目录中可能存在的同名文本文件。
第13、14行使用单元格的End属性取得工作表中已使用数据的行、列号,关于End属性请参阅错误!未找到引用源。。
第15行代码重新定义动态数组myDataAr的大小。关于动态数组请参阅技巧错误!未找到引用源。。
第16行到第20行代码将工作表数据赋给数组myDataAr。
7
VBA常用技巧代码解析
第21行代码使用Open语句打开文本文件以完成对文本文件的输入。关于Open语句请参阅技巧1-2。
第22行到第29行代码使用Print #语句将数组myDataAr中的所有元素写入到文本文件中。Print #语句将格式化显示的数据写入顺序文件中,语法如下:
Print #filenumber, [outputlist]
Filenumber是必需的,任何有效的文件号。 第30行代码Close语句关闭文本文件。
2-2 另存为文本文件
使用SaveAs方法将工作表另存为文本文件,如下面的代码所示。
#001 Sub SaveText()
#002 Dim myFileName As String #003 myFileName = \工资表.txt\#004 On Error Resume Next
#005 Kill ThisWorkbook.Path & \#006 Application.ScreenUpdating = False #007 Worksheets(\
#008 ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path _ #009 & \#010 FileFormat:=xlCSV #011 MsgBox \文件保存成功!\
#012 ActiveWorkbook.Close SaveChanges:=False #013 Application.ScreenUpdating = True #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,
8