美文网首页VBA分享专栏Excel 加油站职场Office技巧
Excel VBA之FSO-2.1文件夹的创建,删除

Excel VBA之FSO-2.1文件夹的创建,删除

作者: Excel和VBA | 来源:发表于2019-07-12 21:53 被阅读1次

    前景提要

    好了,结束了上一系列VBA和文件夹的介绍之后,今天我们正式开始进入新篇章,VBA中FSO的运用,看到标题,大家一定会觉得非常的熟悉,前面才刚刚说过,上一列系我们才说过了VBA和文件夹之间的关系,怎么这一次有开始说文件夹的创建了呢?这里我也简单解下大家的疑惑,虽然我们之前学习了mkdi()来创建文件夹,但是在VBA语言中,针对系统文件夹的这一块,他有专门的操作语法,就是FSO,所以呢,前面我们学习了一些速成,简单的文件夹的操作之后,我们这里来学习下专业的一些文件夹的处理,两个完全是可以相互结核一起使用的,不过FSO更加严谨

    今天我们从FSO创建文件夹以及删除文件夹开始说起,计划中,大概用5天左右的时间分享完这一系列。

    思路

    FSO,在VBA里面是属于ADO范畴的,不能够直接使用,需要先申明绑定才可以的,绑定主要是通过VBA界面的引用来实现的


    image.png

    这种方法叫做前期引言,有优点也有缺点,优点就是对于初学者来说,前期绑定了之后能够有代码提示,缺点就是换一台电脑,,,就呵呵了,看过小编前面一系列的人都知道,小编属于那种比较强调通用性的人,所以小编主要告诉大家如果通过后期绑定,就是直接在代码中申明引用的方式来提高代码的通用性。

    引用了FSO之后呢,我们就可以使用创建文件夹和删除文件夹了,但是既然FSO是非常的严谨的,那么我们也严谨一点,在创建文件夹的时候,如果碰到重名的文件夹,系统是不是报错无法创建呢?这个再上一系列的mkdir()中我们就没有判断,因为mkdir()要判断的话要绕个弯子,比较麻烦,但是FSO就可以轻松实现,那么我们就围绕着这样的思路,判断文件夹是否存在-创建文件夹-删除文件夹来写代码

    上代码

    Sub test()
    
        Set objFSO = CreateObject("Scripting.FileSystemObject")
    
        NewFolderName = ThisWorkbook.Path & "\" & "测试"
    
        If objFSO.FolderExists(NewFolderName) Then
    
            objFSO.DeleteFolder (NewFolderName)
    
            Set myfolder = objFSO.createfolder(NewFolderName)
    
        Else
    
            Set myfolder = objFSO.createfolder(NewFolderName)
    
        End If
    
    End Sub
    

    效果如图:

    image.png

    我们成功的在当前文件所在的地方创建了一个名为测试的文件夹。

    代码解析

    首先我们先通过后期绑定的方式申明FSO

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    然后获得当前文件所在的位置,加上测试两个字,构成新的路径。

    path在VBA中,主要是获得文件的路径的,这里的路径所在文件夹位置的上一级,比方说“D:/新建文件夹/测试.xlsx”他的path就是““D:/新建文件夹”并不是完整的路径,这点大家要注意,这里我们回到代码中去实操下更清楚,我的文件是放在桌面的,然后调试

    image.png

    我们可以看到路径出来了,但是并不是完整的路径,是上一级的路径,这点大家要留意使用。

    然后进入今天的重点,FSO的运用了。

    首先我们要判断我们要创建的文件夹在当前桌面是否存在同名的文件夹,大家都知道同名的话,是无法创建成功的,所以我们要先判断

    objFSO.FolderExists(NewFolderName)

    就是这样的效果,语法结果就是FolderExists(NewFolderName),文件夹是否存在,如果存在呢,肯定弹窗报错无法创建,换一个名字了,但是我们这里为了程序运行的顺利,我们将原来存在的文件夹删除,那么删除文件件怎么操作呢,DeleteFolder (NewFolderName),就是删除文件夹的操作,没有了同名文件夹就可以创建文件夹了,这就可以用FSO创建文件夹了。这里要注意,在创建文件夹的时候,前面要有一个set。当然啦,如果同名文件不存在嘛,自然更简单啦,直接调用创建方法直接创建就好啦

    Set myfolder = objFSO.createfolder(NewFolderName)

    完整代码加注释

    Sub test()
    
        Set objFSO = CreateObject("Scripting.FileSystemObject") '申明一个ADO,固定搭配
    
        NewFolderName = ThisWorkbook.Path & "\" & "测试" '说明文件夹的名字
    
        If objFSO.FolderExists(NewFolderName) Then '判断当前路径是否存在同名文件夹
    
            objFSO.DeleteFolder (NewFolderName) '如果存在,删除同名文件夹
    
            Set myfolder = objFSO.createfolder(NewFolderName) '删除之后,创建文件夹
    
        Else
    
            Set myfolder = objFSO.createfolder(NewFolderName) '不存在同名文件夹,直接创建
    
        End If
    
    End Sub
    

    延伸复习一下,如果用我们之前学习过的mkdir()是否可以实现呢?尝试下

    相关文章

      网友评论

        本文标题:Excel VBA之FSO-2.1文件夹的创建,删除

        本文链接:https://www.haomeiwen.com/subject/rplukctx.html