vba如何查找所有子文件|EXCEL VBA 获取文件夹及子文件夹下所有文件并建立超链接

⑴ 如何通过VBA快速寻找到文件夹及其中的子文件夹,并建立超链接。多谢!

提供思路:1。用FileSystemObject建立对文件、文件夹对象的引用2。用循环和递归算法找出文件和子文件夹3。将取得的文件或文件夹对应输入到相应的单元格中4。设置单元格对应的链接。只是暂时是这样想的,具体要写代码。如是只为了练手,就自己搞吧。确实对工作有帮助,可以QQ:359717273

⑵ VBA中怎么遍历所选路径中所有文件夹及其子文件夹(多个子文件),并返回所有的最底层的文件夹路径

答:执行"获取所有文件夹",按提示操作。文件夹清单会显示在工作表的AB列中。

Sub获取所有文件夹()DimDirectoryAsStringWithApplication.FileDialog(msoFileDialogFolderPicker).InitialFileName=Application.DefaultFilePath&"".Title="请选择一个文件夹".ShowIf.SelectedItems.Count=0ThenExitSubElseDirectory=.SelectedItems(1)EndIfEndWithCells.ClearContentsCallRecursiveDir(Directory)EndSubPublicSubRecursiveDir(ByValCurrDirAsString)DimDirs()AsStringDimNumDirsAsLongDimFilesizeAsDoubleDimTotalFolders,SingleFolderCells(1,1)="目录名"Cells(1,2)="日期/时间"Range("A1:B1").Font.Bold=TrueSetTotalFolders=CreateObject("Scripting.FileSystemObject").GetFolder(CurrDir).SubFoldersCells(WorksheetFunction.CountA(Range("A:A"))+1,1)=CurrDirCells(WorksheetFunction.CountA(Range("B:B"))+1,2)=FileDateTime(CurrDir)IfTotalFolders.Count<>0ThenReDimPreserveDirs(0ToNumDirs)AsStringDirs(NumDirs)=SingleFolderNumDirs=NumDirs+1NextEndIfFori=0ToNumDirs-1RecursiveDirDirs(i)NextiEndSub

⑶ 求助]如何用VBA遍历指定目录下的所有子文件夹和文件-字典模式

F是一个临时逻辑变量,在循环查找工作簿中是否有名为“XLS文件清单”的工作表,找到为“真”,否则为假。目的是方便后续的代码处理,如果没有这个工作表,则先创建建这个工作表,后面才能放置遍历出来的文件夹及文件名。

⑷ 如何用VBA遍历指定目录下的所有子文件夹Excel文件的所有工作表

vba麻烦点,dir最快,excelhome论坛上有大量现成代码:

SubOpiona()'//函数实例FileArr=FileAllArr(ThisWorkbook.Path,"*.xls",ThisWorkbook.Name,False)Fori=0ToUBound(FileArr)MsgBoxFileArr(i)'SetWB=Workbooks.Open(FileArr(I))'//打开工作簿'你的代码'WB.Closetrue'//保存NextEndSub'*******************************************************************************************************'功能:查找指定文件夹含子文件夹内所有文件名或文件夹名(含路径)'函数名:FileAllArr'参数1:Filename需查找的文件夹名不含最后的""'参数2:FileFilter需要过滤的文件名,可省略,默认为:[*.*]'参数3:Liwai剔除例外的文件名,可省略,默认为:空,一般为:ThisWorkbook.Name'参数4:Files是否只要文件夹名,可省略,默认为:FALSE'返回值:一个字符型的数组'使用方法:FileArr=FileAllArr(ThisWorkbook.Path,"*.xls",ThisWorkbook.Name,false)'作者:北极狐工作室QQ:14885553'*******************************************************************************************************PublicFunctionFileAllArr(ByValFilenameAsString,="*.*",OptionalByValLiwaiAsString="",OptionalByValFilesAsBoolean=False)AsString()SetDic=CreateObject("Scripting.Dictionary")'创建一个字典对象SetDid=CreateObject("Scripting.Dictionary")Dic.Add(Filename&""),""i=0DoWhilei<Dic.CountKe=Dic.keys'开始遍历字典MyName=Dir(Ke(i),vbDirectory)'查找目录DoWhileMyName<>""IfMyName<>"."AndMyName<>".."ThenIf(GetAttr(Ke(i)&MyName)AndvbDirectory)=vbDirectoryThen'如果是次级目录Dic.Add(Ke(i)&MyName&""),""'就往字典中添加这个次级目录名作为一个条目EndIfEndIfMyName=Dir'继续遍历寻找Loopi=i+1LoopDimarrx()AsStringi=0IfFiles=TrueThen'//是否只输出文件夹名ForEachKeInDic.keys'以查找总表所在文件夹下所有excel文件为例ReDimPreservearrx(i)IfKe<>Filename&""Then'//自身文件夹除外arrx(i)=Kei=i+1EndIfNextFileAllArr=arrxElseForEachKeInDic.keys'以查找总表所在文件夹下所有excel文件为例MyFileName=Dir(Ke&FileFilter)'过滤器:EXCEL2003为:*.xls,excel2007为:*.xlsxDoWhileMyFileName<>""IfMyFileName<>LiwaiThen'排除例外文件ReDimPreservearrx(i)arrx(i)=Ke&MyFileNamei=i+1EndIfMyFileName=DirLoopNextFileAllArr=arrxEndIfEndFunction'****************************************************************

⑸ 用vba如何查找文件夹下的所有excel文件

何必这么麻烦呢,你用文件——另存为,就可以直接查看当前excel文档所在文件夹下的所有excel文档了

⑹ 用VBA代码如何获得指定文件夹内的所有子文件夹名称

Set fso=CreateObject("Scripting.FileSystemObject") Set folder=fso.GetFolder("D:") dim a() as stringdim bb=1for each thing in folder.subfolders addfolder fso,thing,a,bnextmsgbox bfunction addfolder(byref fso,byref dir,byref a,byref b)set folder=fso.getfolder(dir)a(b)=dirb=b+1For Each thing in folder.SubFolders set folder=fso.getfolder(thing) a(b)=thing b=b+1 addfolder fso,thing,a,b Next end function

⑺ EXCEL VBA 获取文件夹及子文件夹下所有文件并建立超链接

可以用代码完成:1、先编制表格:2、在表格里编写触发宏代码:privatesubworksheet_change(byvaltargetasrange)dimphotonameasstringiftarget.row=3andtarget.column>3andtarget.column<6thenonerrorresumenext'忽略错误继续执行vba代码,避免出现错误消息application.screenupdating=falseapplication.enableevents=falseforeachshpinsheets("查询表").shapesifshp.type<>8andshp.type<>12thenshp.deleteendifnextphotoname=cells(3,4)&".jpg"cells(3,"l").selectactivesheet.pictures.insert(activeworkbook.path&"\照片\"&photoname).select'当前文件所在目录下以单元内容为名称的.jpg图片withselectionta=range(cells(3,"l").mergearea.address).height'单元高度tb=range(cells(3,"l").mergearea.address).width'单元宽度tc=.height'图片高度td=.width'图片宽度tm=application.worksheetfunction.min(ta/tc,tb/td)'单元与图片之间长宽差异比例的最小值.top=activecell.top+2.left=activecell.left+1.height=.height*tm*0.98'按比例调整图片宽度.width=.width*tm*0.98'按比例调整图片高度endwithcells(3,4).selectapplication.enableevents=trueapplication.screenupdating=trueendsub3、在当前目录下建个名为”照片“的子目录,里面存有以姓名为名称的.jpg格式的照片4、在姓名后单元输入姓名后,就能自动插入图片了

⑻ Excel VBA列出某文件夹下子文件夹及文件名

遍历文件夹 并列出文件 & 文件夹 名 代码如下:

在文件夹内 新建 个 Excel文件

Excel文件内 按 Alt+F11 视图–代码窗口, 把如下代码复制进去, F5运行

Sub遍历文件夹()'OnErrorResumeNextDimfn(1To10000)AsStringDimf,i,k,f2,f3,xDimarr1(1To100000,1To1)AsString,qAsIntegerDimtt=Timerfn(1)=ThisWorkbook.path&""i=1:k=1DoWhilei<UBound(fn)Iffn(i)=""ThenExitDof=Dir(fn(i),vbDirectory)DoIfInStr(f,".")=0Andf<>""Thenk=k+1fn(k)=fn(i)&f&""EndIff=DirLoopUntilf=""i=i+1Loop'*******下面是提取各个文件夹的文件***Forx=1ToUBound(fn)Iffn(x)=""ThenExitForf3=Dir(fn(x)&"*.*")DoWhilef3<>""q=q+1arr1(q,1)=fn(x)&f3f3=DirLoopNextxActiveSheet.UsedRange=""Range("a1").Resize(q)=arr1MsgBoxFormat(Timer-t,"0.00000")EndSub

效果如图:

⑼ vba提取多层文件夹的*.xls文件,根据获取到的文件名及路径逐个打开*.xls文件,去判断某几列有多少个数据

一、所需DOS命令

dir [drive:][path] /b > [drive:][path]filename

二、应用实例

如下图,在D盘中,有一个名称为“TQIPC”的文件夹,这个文件夹里面,存放了很多的照片!

看到了没有,文件夹中的照片名称,自动就显示在excel表格中了!

该dos命令非常强大,用好dos命令,可省去我们很多的功夫。

三、知识扩展

下面,再给大家一个例子,即,自动根据照片(根据人物名称),建立文件夹。

如果某个文件夹下面,您存放的是某些人物的照片,并且,每个人物的照片,都使用其名字来命名;这个时候,如何要自动根据人物的自动建立其对应的文件夹,也相当方便!

操作的方法是,先根据上述的方法,获取所有人物的照片的名称,生成EXCEL文件;

然后,在人物名称列前面,插入一列,并输入MD;

接下来,使用查找替换功能,将excel文件中的人物名称,去掉扩展名(只保留名字);

最后,将excel的内容,复制粘贴到记事本中,现在,我们就得到了形如:“MD人物名称”这样的命令格式了。(md 文件名称,该命令格式,是使用来建立文件夹的命令,上述的操作,都是为此做准备!)

将记事本文件保存成为形如:124.bat格式的文件,最后,双击此文件,文件夹名称就自动建立好了!


赞 (0)