admin管理员组

文章数量:1794759

VBA之dir函数综合使用

VBA之dir函数综合使用

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

本文标签: 函数VBAdir