① 如何利用Excel批量查找D盘子文件夹下的文件
其实不用写这么多的代码,只需要新建一个记事本文件,内容只有下面一行:
DIR /S /B D:\文件夹\ > C:\清单.TXT
保存的时候注意:选择文件类型为所有,文件名必须以.BAT结尾,例如A.BAT,然后鼠标双击这个文件就会打开一个黑色的窗口,窗口完毕之后你的C:\清单.TXT就包含了所有需要的文件清单,如果需要查找别的文件夹编辑这个A.BAT文件里面的【D:\文件夹\】就可以,也可以限定扩展名,例如只关注EXCEL文件使用【D:\文件夹\*.XLS?】,如果文件夹里面含有空格需要使用英文的双引号。
最后把 C:\清单.TXT 里面的内容存入EXCEL可以使用复制、粘贴。
② 批量获取文件夹以及子文件夹下文件数量,输出到Excel表Ơ
直接用excel自带的power query查询即可:
【数据】-【获取数据】-【来自文件】-【从文件夹】,选择文件夹,打开】,【加载】,搞定:该文件夹及其子文件夹下的文件列表就加载到excel中了,有文件名、文件类型、文件的时间信息、路径信息等;下来随意你,可以进行分类筛选、统计都可以了。
如果你的excel版本没有包含这个插件工具,自己上网下载power query这个插件安装吧。
③ EXCEL VBA 获取文件夹及子文件夹下所有文件并建立超链接
可以用代码完成:
1、先编制表格:
2、在表格里编写触发宏代码:
private
sub
worksheet_change(byval
target
as
range)
dim
photoname
as
string
if
target.row
=
3
and
target.column
>
3
and
target.column
<
6
then
on
error
resume
next
'忽略错误继续执行vba代码,避免出现错误消息
application.screenupdating
=
false
application.enableevents
=
false
for
each
shp
in
sheets("查询表").shapes
if
shp.type
<>
8
and
shp.type
<>
12
then
shp.delete
end
if
next
photoname
=
cells(3,
4)
&
".jpg"
cells(3,
"l").select
activesheet.pictures.insert(activeworkbook.path
&
"\照片\"
&
photoname).select
'当前文件所在目录下以单元内容为名称的.jpg图片
with
selection
ta
=
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
'按比例调整图片高度
end
with
cells(3,
4).select
application.enableevents
=
true
application.screenupdating
=
true
end
sub
3、在当前目录下建个名为”照片“的子目录,里面存有以姓名为名称的.jpg格式的照片
4、在姓名后单元输入姓名后,就能自动插入图片了
④ Excel VBA列出某文件夹下子文件夹及文件名
遍历文件夹 并列出文件 & 文件夹 名 代码如下:
在文件夹内 新建 个 Excel文件
Excel文件内 按 Alt+F11 视图--代码窗口, 把如下代码复制进去, F5运行
Sub遍历文件夹()
'OnErrorResumeNext
Dimfn(1To10000)AsString
Dimf,i,k,f2,f3,x
Dimarr1(1To100000,1To1)AsString,qAsInteger
Dimt
t=Timer
fn(1)=ThisWorkbook.path&""
i=1:k=1
DoWhilei<UBound(fn)
Iffn(i)=""ThenExitDo
f=Dir(fn(i),vbDirectory)
Do
IfInStr(f,".")=0Andf<>""Then
k=k+1
fn(k)=fn(i)&f&""
EndIf
f=Dir
LoopUntilf=""
i=i+1
Loop
'*******下面是提取各个文件夹的文件***
Forx=1ToUBound(fn)
Iffn(x)=""ThenExitFor
f3=Dir(fn(x)&"*.*")
DoWhilef3<>""
q=q+1
arr1(q,1)=fn(x)&f3
f3=Dir
Loop
Nextx
ActiveSheet.UsedRange=""
Range("a1").Resize(q)=arr1
MsgBoxFormat(Timer-t,"0.00000")
EndSub
效果如图:
⑤ 用EXCEL VBA获取指定目录下的文件名(包括文件夹名)
1、首先利用快捷键“Windows键+R”打开“运行”窗口