VBA代码打开顺序文件三种模式:Input、Output、Append的区别-不能打开要写入的文件

大家好,我们今日继续讲解VBA代码解决方案的第131讲内容:打开顺序文件三种模式:Input、Output、Append的区别.在《VBA代码解决方案》第127讲中,我讲过打开顺序文件的Open语句的语法如下:Open pathname For mode [Access access][lock] As [#]filenumber [Len=reclength]

对于其中第二个参数Mode是这样描述的:

"Mode是个决定文件如何打开的关键字。顺序文件可以以下列模式之一来打开:Input, Output 或Append。使用Input读文件,Output写文件,将覆盖任何存在的文件,以及Append来写入文件,同时附加上任何已经存在的信息。"

在上述的讲解中提及三个关键字Input、Output、Append。其中input是读取文件,而Output和Append是可以用来来写入文件的,那么Output和Append又有哪些不同呢?我们来看下面的分析和讲解(备注:现在讲的内容是《VBA代码解决方案》的第三册内容,在理论基础上需要读者有所提高)

当我们要往一个顺序文件里写入数据时,应该以Append或者Output模式打开该文件。这两种模式的区别解释如下:

① Append允许在一个现存文件的结尾处添加数据。例如,如果你以Append模式打开" E:\nz\work\文章\人员表单.txt"文件,并且将文本"此文件的人员为现有人员"加到该文件中,VBA不会删除或者以任何方式改变该文件中已经存在的文本,只是会在文件的结尾处加上面新的文本。

② Output 当你以此种模式打开一个文件时,VBA会将文件里的现存的数据删除,如果该文件并不存在的话,就会创建一个全新的文件。例如,如果你以Output模式打开文件" E:\nz\work\文章\人员表单.txt",并且试图往里面写数据的话,那么以前储存在该文件里的文本就会被删除掉。如果你在写入数据之前没有备份该文件的话,这种操作的失误代价将会是非常大的。但如果你确实是想要用新数据取代整个原来整个内容的话,确实应该以Output模式打开该已存在的文件。但这种操作最好能实现备份好原数据。如下面的两种实例:

实例1:要在一个"E:\nz\work\文章\人员表新表单.txt"的全新文件里输入一些文本,那么以Output模式打开该文件:Open "E:\nz\work\文章\人员表新表单.txt" For Output As #1

看下面的代码:

VBA代码打开顺序文件三种模式:Input、Output、Append的区别

运行后:

VBA代码打开顺序文件三种模式:Input、Output、Append的区别

上面的截图中新的文件"人员表新表单.txt"产生了,但这只是一个空的文件。

实例2: 要取代现存文件"E:\nz\work\文章\人员表单.txt"的内容,首先将原始文件备份一份,然后将原始文件以Output 模式打开:

FileCopy "E:\nz\work\文章\人员表单.txt","E:\nz\work\文章\人员表单备份.txt"

Open "E:\nz\work\文章\人员表单.txt" For Output As #1

代码截图:

VBA代码打开顺序文件三种模式:Input、Output、Append的区别

运行后的截图:

VBA代码打开顺序文件三种模式:Input、Output、Append的区别

此时备份文件是有数据的,而新的文件是空的文件。

注意点:顺序文件必须分别打开来执行读和写的操作,不可以同时执行这些操作。例如,在一个文件已经打开并且写入数据后,该文件必须先关闭,之后才能再打开来读取数据。

今日内容回向:

1: 顺序文件有几种打开的方式?有什么不同?

2: 对于output打开方式要注意的有什么?

推荐阅读