分享

ExcelVBA基础课程(4):循环(5)——从Excel导出数据到文本

 L罗乐 2018-01-02

上一节我们讲到了如何将文本读取到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

上述代码看不懂无所谓,只要知道在相应的地方(注释的内容)进行修改就可以了,这样一来,我们就可以建立两个按钮,一个是读取文本数据,而另一个就是输出文本数据。是不是看起来很厉害的样子。


    



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多