ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索

文本文件操作有关的个人学习总结(逐步更新ing)

已有 6091 次阅读2013-11-21 23:03

近期在论坛里看帖比较频繁,在能力范围之内辅助解决了个别问题,发现不少童鞋提出文本处理的需求,所以做了以下总结。

由于本人也是初学者,靠着个人的使用习惯及感觉来总结的,难免有些疏漏,希望各位给批评指正。

使用的office版本为2003.

一、个人感觉比较通用的文本操作方法

1、打开文本文件的几种模式

对文件文件在进行读或写操作之前,需要使用Open语句打开该文件。

open filename for input\output\append As  #number

filename 是完整文件名,为字符串格式(注意:必须是完整文件名,即路径+文件名)。

number 是需要打开的文件对应的文件号。是一个介于1 511 之间的整数(类型为整形Integer)。如果已经有多个文件号被使用,需要查找一个可用的文件号时可以使用FreeFile函数可以返回一个可用的文件号。例如: a = FreeFile

 

以下的文件号均以1为例进行说明

 

Input:读取文件。目前大家咨询问题使用比较多的就是打开一个文件读取其内容,执行相关的操作。

 

Output:写文件,目前使用比较少的,使用该模式,会清空已有的文件内容。

 

Append:写入现有文件的末尾。不同于output的清空文件内容,会在当前文件最后接着累加新内容

2、对文本文件进行写操作

Write语句产生一行由逗号分隔的值,并在日期的周围放上(#),在字符串的周围放上(")。

写入格式:Write #1str1str2

 

Print能写入任何格式的文本文件。

写入格式:Print #1str1str2

Printwrite实例:

Sub test11()

    Open ThisWorkbook.Path & "\output.txt" For Output As #1

    str1 = "123"

    str2 = "你好吗"

    str3 = "hello"

    Print #1, str1, str2, str3, Date

    Write #1, str1, str2, str3, Date

    Close #1

End Sub

output.txt文件内生成两列内容如下:

123           你好吗           hello         2013-11-22

"123","你好吗","hello",#2013-11-22#

说明:ThisWorkbook.Path表示相对路径,是指当前vba对应宏文件所在的文件夹,当前的output.txtvba对应的宏文件是同文件夹。

 

3、对文本文件进行读取操作

Input语句有如Write语句产生的那样并读取数据到变量列表中。

读取格式:Input #1str1str2

例如:用write写入文件如下:

    str1 = "123"

    str2 = "你好吗"

    str3 = "hello"

    Write #1, str1, str2, str3, Date

将以上内容写入文件结果为:

"123","你好吗","hello",#2013-11-22#

再使用input读取的时候使用如下语句:

Input #1, str5, str6, str7,str8,会发现str5="123",str6= "你好吗",str7="hello",str8=2013-11-22

个人感觉input不是很常用,但是在使用中一定要注意后面的变量个数,要不然会报错,比如本例中有四个变量分别对应写入的四个,如果再增加变量就会报错。

 

Line Input方式将读取整行字符串。

读取格式:Line Input # 1strLine

这个比较常用,一般是结合While Not EOF(1) 。。。Wend来进行正行读取,在读取正行数据后,可以用split函数进行拆分成数组,或者用instr函数对正行数据进行查找是否有需要的字符串。

4、关闭文本文件

Close #1,如果有多个文件就分别在相应的位置使用close #number进行关闭。最好不用一个close来关闭,避免引起误关闭。

http://club.excelhome.net/forum.php?mod=redirect&goto=findpost&ptid=1126466&pid=7672466一个实例

二、文本打开的其他方法

excel文件里打开文本文件

Workbooks.OpenText Filename:=strfile, Origin:=936, _

StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _

ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _

, Space:=False, Other:=False, FieldInfo:=Array(1, 2), _

TrailingMinusNumbers:=True

 

或者直接用Workbooks.OpenText strfile

其中strfile是文本文件名的全路径。

 

本人用过几次,也是对应处理txt文件,主要是先用excel打开文本文件,然后在对应的excel里对该文本文件内容进行操作。

在对文本文件内容想excel表内拷贝的时候,个人感觉此操作方法效率比较高,但是在使用的时候需要注意打开的多个excel文件怎么去激活操作。

 

三、还有其他打开方法,但是由于本人能力有限,还不曾熟悉使用,没有介绍,请各位继续补充

如何只把数组arr 第三列填充到工作表a列 从A1开始
http://club.excelhome.net/thread-1102016-1-1.html
range("a1").resize(ubound(arr),1)=application.index(arr,0,3)

QQ:1302084032,可以加我或者QQ群:281250721


路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 免费注册

关闭

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

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

GMT+8, 2024-4-19 18:44 , Processed in 0.028583 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

返回顶部