只要掌握了Dir函数,无论想如何输出遍历文件夹的结果,都是手到擒来!

文摘   2024-11-11 20:00   上海  




欢迎转发和点一下“看”,文末留言互动!

置顶公众号或设为星标及时接收更新不迷路





小伙伴们好,今天来和大家分享一道VBA的题目。之前我和大家分享了一篇推文想知道如何快速提取文件夹中所有文件名吗?学不会这个VBA小函数,你就甭想遍历文件夹下全部内容!,在那两篇帖子中我分别分享了用函数公式和代码来提取工作簿中所有文件的名称。

今天的这道题目是在以上基础上更近一步。在提取了工作簿的名称后,还要将每个工作簿中的工作表名称提取出来,放在工作簿名称后。







同样,这道问题也可以利用VBA轻松解决,并得到如下的结果。





01

VBA代码遍历工作簿和工作表





完成代码如下:

Sub text()    Dim directory As String, filename As String, i As Integer, j As Integer, mysht As Worksheet    Application.ScreenUpdating = False    directory = ThisWorkbook.Path & "\工作簿\"    filename = Dir(directory & "*.xl??")    Do While filename <> ""        i = i + 1        j = 2        Sheet1.Cells(i, 1) = filename        Workbooks.Open (directory & filename)        For Each mysht In Workbooks(filename).Worksheets            Sheet1.Cells(i, j) = mysht.Name            j = j + 1        Next        Workbooks(filename).Close        filename = Dir    Loop    Application.ScreenUpdating = TrueEnd Sub

简单介绍一下这段代码。

Application.ScreenUpdating = False...Application.ScreenUpdating = True

ScreenUpdating关闭,避免屏幕过于频繁地更新刷屏。过程结束后要记得将ScreenUpdating再次打开。

directory = ThisWorkbook.Path & "\工作簿\"filename = Dir(directory & "*.xl??")

命名个变量directoryfilenmae其中filename的命名利用了DIR函数。

Do While filename <> ""    i = i + 1    j = 2    Sheet1.Cells(i, 1) = filename    Workbooks.Open (directory & filename)    For Each mysht In Workbooks(filename).Worksheets        Sheet1.Cells(i, j) = mysht.Name        j = j + 1    Next    Workbooks(filename).Close    filename = DirLoop

Do...loop实现了这样一个循环过程:

当找到第一个工作簿时,将其名称写入A1单元格

随后将该工作簿打开

For Each语句遍历该工作簿中每一个工作表,并在第一行的第二个单元格开始,依次录入工作表名。

完成后关闭该工作簿。

将下一个工作簿名称命名给参数filename,循环。


本期内容练习文件提取方式:

链接: https://pan.baidu.com/s/15UmmoyCZdRG4CQ4Myyn9dw?pwd=229q 提取码: 229q 


好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!


-END-


长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助


我就知道你“在看”


推荐阅读

Excel应用之家
介绍、交流EXCEL各项功能在工作中的实际应用; 为你答疑解惑;分享各类图表、表格和模板;提供有偿代工服务。
 最新文章