① 如何利用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」打開「運行」窗口