Excel VBA 读取资料夹档案,并显示于清单方块中

继上次做完了读取BIN档的功能,开心的用了一阵子之后又开始贪心了,每次要读不同档案都要複製一次路径实在很麻烦,于是想要新增列出档案清单的功能,结果如下图:

http://img2.58codes.com/2024/20161052TI296hhpNy.png

1. VBA

Code 的部分如下:

Sub Load_Folder_Click()        Dim MyPath As String    Dim MyFile As String    Dim FileCount As Integer        MyPath = Replace(Range("C3").Value, """", "") & "\"        MyFile = Dir(MyPath)    FileCount = 1    Worksheets("MGB parser").Range("U:U").ClearContents        Do While MyFile <> ""        Cells(FileCount, 21) = MyFile        FileCount = FileCount + 1        MyFile = Dir    Loop    Range("T1").Value = FileCountEnd Sub

这段程式的功能是

读取C3的路径并去除双引号「"」(因为win10 的複製路径功能都会代双引号)清除U栏的资料(重新读取的时候会需要)读取资料夹内的所有档案并依序放到U栏中 (程式参考这个网站 VBA Dir 函数使用说明 | 读取档案资料夹内的所有档案 )将档案数量放在T1

执行结果如下:
http://img2.58codes.com/2024/20161052d7pRVplsyT.png

2. 清单方块

至此完成了一半,后面的麻烦是清单方块需要选择输入範围,範围太短无法列出所有档案,太长又会造成清单方块下方出现很多空白、且scroll bar会很难用(尤其是居然不支援滑鼠滚轮),如下图这样:
http://img2.58codes.com/2024/20161052e6svOvDF5d.jpg

这边需要利用Excel 的「定义名称」功能配合「INDIRECT」 函数,可以做出动态的选择範围。
首先打开名称管理员,如下图定义一个新的名称
http://img2.58codes.com/2024/20161052yMGpLR4O1p.png

INDRECT里会参考T1的数字(刚刚用VBA算出来的FileCount)组字串,结果就是我们需要的範围,我们定义它名称叫做"档案清单"。
设定好之后就可以回到清单方块的输入範围,输入刚刚定义的名称,便可好好显示我们需要的档案,然后将选择的结果放在T2

3. 接上Load File的功能

清单方块选择的结果只会显示项目的编号,需要再处理一下才能改成档案名称,这边使用OFFSET函数,根据选择的数字,从第一个档案往下OFFSET,并结合C3的资料夹路径,组合出完整档案路径。如此一来便能接上之前做的Load File功能 ,用起来顺手多了

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章