上一节我们讲到了如何将文本读取到Excel中,这一节我们就来谈谈反向操作,如何将Excel中的文字导出到文本中。 需求很简单,将表格内第1列到第N列的第1行到第M行的文字导出到文本中。 代码如下(复制直接就能使用!!!): On Error Resume Next fengefu = ''*'' ''分隔符自己定义,如果和导入文本的宏配合使用的话,分隔符的设定应该一致 Dim fso As Object Dim MyTxt As Object Dim MyFName As String Set fso = CreateObject(''Scripting.FileSystemObject'') With ActiveSheet MyFName = ''c:\1.txt'' ''路径及文件名还有尾缀都可以自行修改,例如:MyFName = ThisWorkbook.Path & ''\'' & ThisWorkbook.Name & ''.txt''......保存到当前Excel文件相同的路径中,且名字同Excel文件一样 Set MyTxt = fso.CreateTextFile(Filename:=MyFName, OverWrite:=True) ''=TRUE是直接覆盖,False是提示 For i = 1 To 100''行数选择,第1行到第100行 MyTxt.write .Cells(i, 1) & fengefu & .Cells(i, 2) & fengefu & .Cells(i, 3) & fengefu & .Cells(i, 4) & Chr(10)''chr(10)是换行符,这个是从第1列到第4列,即A:D,可自行修改 Next MyTxt.Close End With Set MyTxt = Nothing Set fso = Nothing MsgBox ''路径为:'' & MyFName, vbInformation, ''提示'' 顺便提一下,想复制代码的,可以收藏本文,然后登陆电脑版微信再打开复制就可以了。 还记得上期的问题么?就是用Excel的文本数据导入功能在第二次执行宏的时候会出错,想要解决这个问题的办法就是再录制一个删除当前文本数据的宏,然后将录制好的宏复制到打开文本的代码之前,也就是说文本导入之前需要先删掉可能存在的文本数据,当然了如果没有文本数据的话还是会报警,那就在代码的第一行复制如下代码:On Error Resume Next,也就是说出错了继续就可以了。 上述内容没看懂可以慢慢研究,直接上完整的从文本从导入到Excel的代码(复制就能直接使用!!!): On Error Resume Next Range(''A:D'').select''假设A列和D列为存放导入的数据的区域,将A列到D列选中 Selection.QueryTable.Delete Selection.ClearContents Range(''A1'').Select ''清除可能存在的文本数据 ''——————————————————我是分割线 ''以下是上一期导入文本数据的代码 ''Dim lujing as string 上期的代码有问题,这句话的存在仅仅是为了说明字符串的合并,实际上应该删除 Dim quyu as string quyu=''$A$1'' lujing = Application.GetOpenFilename(''文本文件 ,*.txt'')''这里的''文本文件''还有''.txt''是可以自行修改的,和上述的导出文本的宏配合使用的时候,尾缀应该保持一致 if lujing=false then Exit sub With ActiveSheet.QueryTables.Add(Connection:=''TEXT;'' & lujing, Destination:= Range(quyu)) .Name = left(lujing,len(lujing)-4) .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .TextFilePromptOnRefresh = False .TextFilePlatform = 65001 .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote ''以下四个为分隔符的选择 .TextFileConsecutiveDelimiter = False''分隔符是否连续 .TextFileTabDelimiter = True''制表符分隔符 .TextFileSemicolonDelimiter = False''分号分隔符 .TextFileCommaDelimiter = False''逗号分隔符 .TextFileSpaceDelimiter = False''空格分隔符 .TextFileOtherDelimiter = ''*''''自定义分隔符
.TextFileColumnDataTypes = Array(1, 1) .TextFileTrailingMinusNumbers = True .Refresh BackgroundQuery:=False End With 上述代码看不懂无所谓,只要知道在相应的地方(注释的内容)进行修改就可以了,这样一来,我们就可以建立两个按钮,一个是读取文本数据,而另一个就是输出文本数据。是不是看起来很厉害的样子。
|
|
来自: L罗乐 > 《VBA常用小代码》