☆本期內(nèi)容概要☆
DOS命令創(chuàng)建文件夾
批處理文件.bat
VBA代碼創(chuàng)建文件夾
大家好,我是冷水泡茶,大家在工作中有沒(méi)有遇到過(guò)這種情況,比如,申報(bào)一個(gè)政府項(xiàng)目、申請(qǐng)一個(gè)財(cái)政專(zhuān)項(xiàng)資金什么的,需要報(bào)送很多材料,要裝訂成冊(cè),還要掃描成電子檔,并且要按照要求存放在不同的文件夾里,以方便審核。
我這么問(wèn),那是因?yàn)槲易约号龅竭^(guò)這樣的事。要求把跟客戶(hù)簽訂的合同掃描成圖片,每個(gè)單位放在以這個(gè)單位命名或者是數(shù)字、合同號(hào)碼命名的文件夾里,我這有一例子:
我以前是怎么做的呢?
要新建目錄的數(shù)量很多,手工一個(gè)一個(gè)的來(lái)建也不是不可以,只是有點(diǎn)不符合我“表哥”的身份哪,這事是萬(wàn)萬(wàn)不能這樣干的。
這里主要是創(chuàng)建這一串以數(shù)字命名的文件夾,上級(jí)文件夾不多,可以手工創(chuàng)建。
我們需要用到一個(gè)DOS命令“MD”--創(chuàng)建文件夾,DOS是早期的電腦系統(tǒng),在現(xiàn)在的Windows系統(tǒng)中,還有它的蹤跡,那就是命令提示符:
MD命令:MD 文件夾名,在當(dāng)前目錄下創(chuàng)建文件夾
當(dāng)然,我們今天不是要用這個(gè)命令提示符,我們要用的是一個(gè)叫“批處理”的方法,是一個(gè)可以用記事本編輯的文件,后綴名為“.bat“,它可以執(zhí)行一系列的DOS命令。
我在一張EXCEL表中,把要?jiǎng)?chuàng)建的文件夾的命令行做成一個(gè)字符串,“MD”+空格+完整文件夾路徑,我們可以用公式給它拼接出來(lái):
數(shù)據(jù)處理好以后,把G列的命令文本復(fù)制到一個(gè)記事本里,保存關(guān)閉,再把它的擴(kuò)展名改為“.bat”,雙擊執(zhí)行,大功告成!
但是,可能有人就要問(wèn)了,我就是想用VBA,有沒(méi)有方法呢?這個(gè)當(dāng)然可以有,代碼如下:
Private Sub CmdMakeDirectory_Click()
Dim fileSys As Object
Dim arr()
Dim lastRow As Integer
Dim folderPath As String
Dim folderParts() As String
Set fileSys = CreateObject("scripting.filesystemobject")
lastRow = UsedRange.Rows.Count
arr = Range(Cells(2, 8), Cells(lastRow, 8)).Value
For i = 1 To UBound(arr, 1)
If arr(i, 1) <> "" Then
folderParts = Split(arr(i, 1), "\")
For j = LBound(folderParts) To UBound(folderParts)
If j = LBound(folderParts) Then
folderPath = folderParts(j)
Else
folderPath = folderPath & "\" & folderParts(j)
End If
If Not fileSys.FolderExists(folderPath) Then
fileSys.CreateFolder folderPath
End If
Next
End If
Next
MsgBox "文件夾創(chuàng)建成功!"
End Sub
代碼解析:
1、把要?jiǎng)?chuàng)建的目錄字段裝入數(shù)組arr,這里第8列是要?jiǎng)?chuàng)建的目錄,根據(jù)實(shí)際需要修改。
2、循環(huán)數(shù)組,把數(shù)組元素中各級(jí)目錄分列存入數(shù)組folderParts。
3、循環(huán)folderParts,逐級(jí)檢查目錄是否存在,不存在則創(chuàng)建。
這里重點(diǎn)關(guān)注一下構(gòu)建逐級(jí)目錄的代碼:
If j = LBound(folderParts) Then
folderPath = folderParts(j)
Else
folderPath = folderPath & "\" & folderParts(j)
End If
目錄的結(jié)尾不能有“\”,所以當(dāng)目前是根目錄的時(shí)候,也就是第一級(jí),它應(yīng)該是folderPath = folderParts(j),再下級(jí)目錄則為folderPath & "\" & folderParts(j)。
聯(lián)系客服