1.dir函数的有判断一个文件是否存在的功能,也可以使用通配符模糊匹配
返回的是该文件的文件名

Sub test()

Dim i As Integer
For i = 1 To 5
If Dir(“d:\data” & Range(“a” & i) & ".xls*) = “” Then
Range(“b” & i) = “无此文件”
Else
Range(“b” & i) = “有文件”
End If

Next

End Sub


2.如果一个文件夹下有重名文件,dir函数会如何判断呢

Sub test2()

Range(“a1”) = Dir(“d:\data\苏州.xls*”) '第一个dir返回.xls的文件
Range(“a2”) = Dir '第二个dir返回.xlsx文件
Range(“a3”) = Dir '由于没有满足条件的,第三个dir返回空
'Range(“a4”) = Dir '第四个dir返回错误

End Sub

3.用dir拿到文件夹下所有的文件名

Sub test3()
Dim str As String

str = Dir(“d:\data*.xls*”)

For i = 1 To 100
Range(“a” & i) = str

If str = "" Then  '如果str为空了,说明下一个要报错了,退出循环
    Exit For
End If

str = Dir  '把第二个dir的值赋给str

Next

End Sub

4.打开一个路径下的所有文件,然后关闭掉
代码如下:

Sub test4()
Dim str As String
Dim wb As Workbook

str = Dir(“d:\data*.xls*”)

For i = 1 To 100

Set wb = Workbooks.Open("d:\data\" & str)    '把打开的文件用set赋值给wb
					 ' 中间可以用来写功能
wb.Close    '关闭打开的文件

str = Dir
If str = "" Then
    Exit For
End If

Next

End Sub

5.跨文件复制数据,把其他文件的第一张表,复制到指定文件的第一张表里
代码如下:

Sub 文件合并()
Dim str As String
Dim wb As Workbook

str = Dir(“d:\data*.xls*”)

For i = 1 To 100
Set wb = Workbooks.Open(“d:\data” & str)

wb.Sheets(1).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
'跨文件复制时,注意这里的sheets(sheets.count) 要加thisworkbook,不然就是指当前打开的wb
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = Split(wb.Name, ".")(0)
'给表取名,这里用到了split,因为文件名是**.xlsx格式,所以用split按照 "." 来分割

wb.Close
str = Dir
If str = "" Then
    Exit For
End If

Next
End Sub

6.跨文件复制数据,把其他文件的所有表,复制到指定文件里,并且按照原文件的 “表名+文件名” 来命名
代码如下:
Sub 文件合并()
Dim str As String
Dim wb As Workbook
Dim sht As Worksheet

str = Dir(“d:\data*.xls*”)

For i = 1 To 100
Set wb = Workbooks.Open(“d:\data” & str)

For Each sht In wb.Sheets
    sht.Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    '跨文件复制时,注意这里的sheets(sheets.count) 要加thisworkbook,不然就是指当前打开的wb
    ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = Split(wb.Name, ".")(0) & sht.Name
    '给表取名,这里用到了split,因为文件名是**.xlsx格式,所以用split按照 "." 来分割
Next

wb.Close
str = Dir
If str = "" Then
    Exit For
End If

Next

End Sub

更多推荐

VBA之dir函数综合使用