Excel VBA之FSO-2.4创建文本文件

2021-01-11  本文已影响0人  Excel和VBA

前景提要

在之前我们也是接触了一些关于FSO的运用,在VBA的世界中,FSO在文件方面的操作还是非常的强大的,日常的工作中,我们很多的数据并不一定存在excel,有时候还会存在文本文件中,就是TXT文件,文本文件的好处就是读取方便,并且内存不会很大,其实VBA也是可以操作文本文件的,VBA可以创建文本文件,同时可以读取文件文件,写入文本文件,这些是后话,今天我们先说下如何通过VBA创建一个文本文件,因为他需要用到FSO,至于之后的读取和写入,我们后面第7系列来说。

思路

其实创建文本文件的思路和之前创建文件夹的思路是一致的,给一个路径之后,就可以直接创建了,当然我们还是需要判断下当前文件夹中是否存在同名的文件,这里我们插入一个知识点,如何通过我们之前学过的dir()函数来判断当前文件夹中是否存在相同的文件,大家可以和FSO的方法相互对比下,找到自己适合的方法。

上代码

Sub test()

Dim FileName$, fso As Object

Set fso = CreateObject("Scripting.FileSystemObject")

FileName = "D:\测试文本.txt"

If Len(Dir(FileName)) > 0 Then

    fso.deletefile (FileName)

    Set txx = fso.CreateTextFile(FileName, True)

    Else

        Set txx = fso.CreateTextFile(FileName, True)

End If

End Sub

效果如图:

执行操作前:

原文件夹并没有txt文件

image.png

执行操作之后:

image.png

很明显,代码达到了我们的要求。

代码解析

首先先声明一个FSO对象,这是利用FSO的起手式,在之前我们已经讲过很多次了,这个就不做描述

然后进入我们今天的第一个知识点,如果通过dir()函数来判断文件中是否存在同名文件,首先我们回忆下之前学习过的dir()的用法,主要是在遍历文件夹的时候使用的,今天我们在升华一下,dir(pathname)简单的说,就是判断这样的路径是否存在,我们可以用来判断文件或者文件夹是否存在,如果存在的话,会返回当前文件的文件名,是个字符串,这里我们可以使用len()函数来判断返回的字符长度,如果大于0,证明返回的并不是一个空字符串,就证明文件是存在的。我们来验证下

我们先删除我们之前验证的文件,然后重新执行下程序

image.png

这里我们可以看到如果文件不存在,返回的是一个空值,那么字符长度肯定不会大于0,那么就可以直接创建文本文件了,如果存在呢?

image.png

这里我们可以看到,如果存在的话,返回的是一个字符串,我们可以通过判断文本的长度了,既然长度大于零,就可以直接执行后面的创建命令了。

好了,再来说下如何通过FSO创建文本文件,其实很简单,一句话

Set txx = fso.CreateTextFile(FileName, True)

这里大家要注意前面一定要加上一个set。当然如果存在相同的文件也不怕,我们可以利用我们上节学习的删除文件的方法删除原来的历史数据即可。

fso.deletefile (FileName)

完整代码加注释

Sub test()

Dim FileName$, fso As Object

Set fso = CreateObject("Scripting.FileSystemObject") '声明一个FSO

FileName = "D:\测试文本.txt" '设置文件名和路径

If Len(Dir(FileName)) > 0 Then '通过dir()函数来判断文件是否存在

    fso.deletefile (FileName) '存在就删除原文件

    Set txx = fso.CreateTextFile(FileName, True) '在创建新的文件

    Else

        Set txx = fso.CreateTextFile(FileName, True)

End If

End Sub
上一篇下一篇

猜你喜欢

热点阅读