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
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
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