上回書說到,如何用EXCEL建立自己的工作臺(導航與日志),有朋友說,自己的文件太多了,做起導航很費勁。別急,其實我們可以快速提取文件名,以便于我們批量建立超鏈接。
點擊下圖延伸閱讀:《高效秘技!用EXCEL制作導航頁和日志表管理日常工作》
1. 無門檻通用bat法——用批處理腳本提取文件名
提取當前文件夾下的文件、文件夾名稱(不含子文件夾)
新建一個文本文檔,命名為“提取文件名”。
打開文本文檔,輸入公式:dir *.*/b>文件清單.txt
dir為列表命令,/b為只保留文件名和擴展名參數(shù),>為將命令結(jié)果導入到指定文件內(nèi)
將文本文檔的文件類型改為bat,即將“提取文件名.txt”更改為“提取文件名.bat”。如果你的電腦沒有顯示文件擴展名,另存為.bat文件即可。
注:bat文件就是批處理文件,DOS年代的命令,不挑系統(tǒng)。
雙擊bat文件運行,即可得到文件清單:
提取當前文件夾下的文件、文件夾名稱(包括子文件夾),輸出文件樹
上述方法有時候并不能滿足我們,比如,有的同事就喜歡將文件分門別類都放到文件夾下。然后,我去查一個文件,就需要一個個文件夾去找,點了十幾下,最后發(fā)現(xiàn)還是個空文件夾,真是讓人心累。
有沒有辦法能夠?qū)⑽募A下所有文件的名稱都提取出來?
步驟同上,公式替換成:tree /F > 文件樹1.txt
運行結(jié)果如下:
瞧,我就在某人的電腦下發(fā)現(xiàn)了秘密文件(上圖倒數(shù)第三行),抓他個現(xiàn)行。
點開一看
.
.
.
.
.
.
.
這TM什么標題黨?
僅提取當前文件夾名稱(包含子文件夾)
步驟同上,公式替換成:tree > 文件樹2.txt
運行結(jié)果如下(不提取文件的名稱):
方法小結(jié):
上述三種方法輸出文件都可以改變類型,擴展名“.txt”替換成對應的文件擴展名就可以了,比如替換成“.xls”就生成EXCEL文件。
2. WIN10黨福利——復制路徑
新系統(tǒng)帶來新功能,WIN10系統(tǒng)可以直接選中文件,復制路徑。
粘貼到EXCEL表格中:
EXCEL 2016及以上版本可以用快速填充命令,得到文件名。
EXCEL版本低也沒關(guān)系,可以用替換,將“文件名之前的路徑”替換為“空”。
3. 高階VBA大法——用EXCEL提取文件名
上面兩種方法簡單快捷,但有一個缺點,每次文件有變化,還需要重新運行一次批處理命令,再粘貼到EXCEL中。
能不能將更簡單一點?
VBA是微軟的一種宏語言,EXCEL學會使用VBA就相當于打開了一片新天地。
具體方法:
1)插入一個長方形,輸入名稱,然后制定宏。(此步驟是為了方便運行,非必須)
2)新建宏。
3)將下面的代碼復制代碼框中:
Sub 提取文件名()
On Error GoTo 100
Dim wsh As Object, mypath As String, ar, i&, br
mypath = CreateObject('shell.application').BrowseForFolder(0, '請選擇要搜索的文件夾', 0).Items.Item.Path '在此指定目錄
Set wsh = CreateObject('wscript.shell')
mypath = wsh.exec('cmd /c tree /f ' & Chr(34) & mypath & Chr(34)).StdOut.ReadAll
mypath = Left(mypath, Len(mypath) - 1)
ar = Split(mypath, vbCrLf)
ReDim br(1 To UBound(ar) + 1, 1 To 1)
For i = 0 To UBound(ar)
br(i + 1, 1) = ar(i)
Next
Range('a1').Resize(UBound(br)) = br
Set wsh = Nothing
100:
End Sub
以上代碼來自EXhome論壇@yangyangzhifeng(學習VBA編程還是頗耗時間的,網(wǎng)上很多代碼可以借鑒)
4)點擊長方形按鈕運行,選擇制定提取文件樹的文件夾。
得到文件樹:
也有代碼可以實現(xiàn)只提取文件名(類似dir批處理命令的效果),下期告訴你。
總結(jié)
文件名提取成功了,那如何快速建立超鏈接呢?且聽下回分解!