vba如何判断指定路径的文件夹?

如题所述

VBA功能的强大不仅仅是体现在对单张工作表或者是单个工作簿。而是以excel为载体,可以实现跨文件操作。搭建这座大楼的第一步必然是遍历文件名与路径。这是这次工程的目的——熟悉文件路径与文件名的遍历。当前文件夹下的遍历当然很简单,但是还有一种文件夹层层包裹的情况,这种时候就需要用一些特殊的方法,这里会将几种都讲清楚。

用到的方法是dir方法。

dir是一种遍历当前目录下文件的方法。在第一次指定了dir中的文件夹路径之后便不用再进行指定。之后每次调用dir,返回的值就是下一个当前文件夹下的文件名。类似于python中的迭代器。当dir遍历了所有文件名对象后,就会返回"",如果再调用才会报错。此外,如果给出具体某个文件的文件路径,文件存在,dir就会返回文件名,不存在则会返回空。

另一个方法是fso对象(filesystemobject)。

因为dir不能够显示文件夹,只能显示带后缀的文件名,所以需要fso来进行辅助。fso的常用用法为。

具体的实现过程:基础部分已经讲解完毕,接下来就是具体的实现过程。首先,第一个值得注意的点是文件夹路径 = 文件路径 + "/"。因为ThisWorkbook.Path只会返回所在文件夹的路径,所以要加一个反斜杠/,这才是文件所在的路径。之后进入循环,每次遍历都通过 Range("A" & Rows.Count).End(xlUp).Row + 1 更新最下单元格的行数。循环的最后使用 文件名 = Dir,将文件名对象给更新。循环终止的条件就是Dir返回的值为"",就终止循环。

在当前文件夹下进行指定后缀文件遍历,对上面的代码进行稍微修改即可。后缀 = 指定后缀.后缀 是从窗体进行输入的,这里不用管。这段代码和上面的代码最大的不同就是使用了通配符*。具体的可以结合前文的dir基础知识。

实现层层嵌套文件夹遍历是最难点。首先将前面的遍历当前文件路径下的文件写成一个函数。接下来是遍历当前路径下所有文件夹,同样将其写成一个函数。只要把上面两个函数进行拼接,那么就可以实现遍历子文件夹中的所有文件以及当前文件夹中的所有文件。但如果子文件夹不止一层,而是很多层,一层套一层该怎么办。这时候就要通过函数嵌套。首先将前面写的两个函数组合成一个新函数,再在新函数中调用自己即可。

总结:使用到了dir与fso对象,加深了对文件操作的认识与理解。嵌套循环的使用在思维上是一个大弯,需要多加练习。为了方便起见,我在代码上额外加入了超链接,点击即可跳转到文件。
温馨提示:内容为网友见解,仅供参考
无其他回答

vba如何判断指定路径的文件夹?
在当前文件夹下进行指定后缀文件遍历,对上面的代码进行稍微修改即可。后缀 = 指定后缀.后缀 是从窗体进行输入的,这里不用管。这段代码和上面的代码最大的不同就是使用了通配符*。具体的可以结合前文的dir基础知识。实现层层嵌套文件夹遍历是最难点。首先将前面的遍历当前文件路径下的文件写成一个函数。...

Excel 怎么判断在指定路径中是否存在一个文件夹
可以利用VBA判断指定路径下是否存在某个文件夹。工具:Office2013 方法如下:1.利用VBA判定当前工作簿所在文件夹中,是否存在一个“鱼木混猪”的文件夹:2.在Excel中按下Alt+F11,输入代码如下:3.F5执行代码,如果文件夹存在,就显示如下图:不存在,怎会弹窗显示“不存在”。

VB查找指定文件夹并获取文件路径的代码
1.首先打开Excel电子表格,然后在开发工具中打开VBA编辑器,如下图。2.在单元格区域输入一些内容,如下图。3.将模块插入到VBA编辑器中,如下图。4.文件的子访问路径()Dimfiless,tempfiless=Application。GetOpenFilename(,,“打开文件”)如果filess=False,那么MsgBox“你没有选择知道选择文件,程序...

vba怎么判断文件夹是否存在?
Function 文件是否打开(文件名 As String) As Boolean On Error Resume Next 文件是否打开 = True If StrComp(Workbooks(文件名).Name, 文件名, vbTextCompare) 0 Then 文件是否打开 = False End If End Function 需要说明的是,参数“文件名”是短文件名(不带路径的文件名)Function 特殊文件夹路...

VBA中怎么通过打开文件的对话框获取选择文件的路径并在其他模块中引用该...
1.插入一个模块或在已有的模块最上面一行定义一个全局变量 比如: Public iFileName As String 2.在这个工作薄的其他模块中都可以引用这个变量 比如:(先执行一次test1,再执行test2)Sub test1()'打开一个选择文件的对话框 iFileName = Application.GetOpenFilename End Sub Sub test2()If iFileName = ...

如何用VBA遍历指定目录下的所有子文件夹Excel文件的所有工作表_百度知 ...
功能: 查找指定文件夹含子文件夹内所有文件名或文件夹名(含路径)'函数名: FileAllArr'参数1: Filename 需查找的文件夹名 不含最后的""'参数2: FileFilter 需要过滤的文件名,可省略

vba如何判断某路径文件是否存在
If Dir("D:\\vba\\abc.txt", 16) <> Empty Then MsgBox "文件存在!"Else MsgBox "文件不存在!"End If

Excel获取指定路径的文件名vba代码
首先按“Alt+F11”组合键,Excel2003打开代码编辑器,单击“插入”菜单-“模块”,双击插入的模块,在右侧的代码窗口中输入:Sub Excel_Partner()Dim myFilename As String, myPath As String ChDir Application.DefaultFilePath ‘改变默认路径 myPath = "C:\\" ‘指定的任意路径 SendKeys myPath & ...

excel,怎么用vba写段关于查找指定文件夹内的文件名,并将其提取值至表...
<> "") Then IsExistFile = fileName Else IsExistFile = "无"End If End Function 参数说明strDir为文件夹路径,fileName为文件名 使用示例:某个单元格输入=IsExistFile("E:\\doc",B2) 即可,若不存在返回无,存在返回B2中的文件名称。路径和文件名可以直接用字符串或引用某个单元格内容。

如何通过VBA,获得本文件所在的文件夹路径。
Sub s() Dim pth$ pth = ThisWorkbook.Path MsgBox "本文件的路径为:" & pthEnd Sub

相似回答
大家正在搜