在前文,我们介绍了如何在vba中打开文件夹的方法。
在平时使用电脑的过程中,手动新建文件夹也是个司空见惯的动作。
在用VBA解决文件相关的问题时,有时候我们也需要在整个VBA流程中先新建一个文件夹,然后再把结果放到这个新建的文件夹中。
VBA本身就内置了一个新建文件夹的语句MkDir,使用起来也非常方便,只需一句话就可以新建一个文件夹,如下所示
Sub QQ1722187970() MkDir "c:\test" End Sub
就一句话代码,我们就在C盘下新建了一个名称为test的文件夹。
写到这里,好像我们的文章就该结束了,但是事实上新建文件夹这个动作往往只是我们整个VBA代码中的一个小插曲,在新建文件夹后面还有一系列动作。
但是在调试VBA代码的时候,有可能新建文件夹整个代码已经调试通过,其它代码出问题了,当我们再次运行整个代码时,会提示出错,如下所示
这是因为第一次运行的时候文件夹已经新建成功,第二次运行的时候由于该文件夹已经存在,无法再新建,导致了上述错误。
这时候,会有两种比较流行的做法:
第一种是加个出错继续运行的语句,如下所示
Sub QQ1722187970() '出错了继续运行 On Error Resume Next MkDir "c:\test" '*********************** '其它代码 End Sub
这种做法我是不建议的,因为这样会导致后续的代码的错误也一起忽略,从而给代码调试带来很大的不便。
第二种也是我比较推荐的,先判断要新建的文件夹是否存在,如下所示:
Sub QQ1722187970() Dim sPath As String sPath = "c:\test" If Len(Dir(sPath, vbDirectory)) Then Debug.Print "已经存在该文件夹" Else MkDir sPath End If '*********************** '其它代码 End Sub
通过Dir(sPath, vbDirectory) 语句判断要新建的文件夹是否已经存在,如果不存在再新建文件夹,这样就可以避免On Error Resume Next 一路到头,如果后续的代码有出错还可以及时的发现并调试解决。
今天通过VBA新建文件夹这么个例子,想传达的一个思想就是,在编写VBA的过程中,严谨的逻辑思维和代码习惯很重要。如果直接采用On Error Resume Next一路到底,确实省事很多,但是这种不严谨的代码习惯会给后续的代码调试带来很多潜在的问题。
当然除了用MkDir方法以外,还可以使用FileSystemObject对象的CreateFolder方法。
代码如下:
Sub QQ1722187970() On Error Resume Next Dim oFso Set oFso = CreateObject("Scripting.FileSystemObject") oFso.CreateFolder ("C:/例子") End Sub
发表评论