VBA實(shí)例

'獲取目錄中的文件、文件夾名稱:將代碼復(fù)制到任意excel執(zhí)行(非SearchPath)

'使用前請(qǐng)修改SearchPath為實(shí)際路徑

Sub search_name()

? ? Const SearchPath = "C:\Users\lum15\Desktop\腳本"


? ? Dim DicList, FileList, I

? ? Dim Num As Long

? ? Num = 1

? ? AWbName = ActiveWorkbook.Name

? ? '標(biāo)題

? ? Workbooks(AWbName).ActiveSheet.Cells(1, 1) = "序號(hào)"

? ? Workbooks(AWbName).ActiveSheet.Cells(1, 2) = "名稱"

? ? Workbooks(AWbName).ActiveSheet.Cells(1, 3) = "類型"

? ? Workbooks(AWbName).ActiveSheet.Cells(1, 4) = "父目錄"

? ? Set DicList = CreateObject("Scripting.Dictionary")

? ? Set FileList = CreateObject("Scripting.Dictionary")


? ? DicList.Add SearchPath, ""? '初始化目錄


? ? '**************遍歷所有目錄*******************

? ? I = 0

? ? Do While I < DicList.Count

? ? ? ? Key = DicList.Keys '本次要遍歷的目錄

? ? ? ? NowDic = Dir(Key(I) & "\" & "*", vbDirectory) '開始查找

? ? ? ? Do While NowDic <> ""

? ? ? ? ? ? If (NowDic <> ".") And (NowDic <> "..") Then

? ? ? ? ? ? ? ? If GetAttr(Key(I) & "\" & NowDic) = 16 Then '找到子目錄,則添加

? ? ? ? ? ? ? ? ? ? DicList.Add Key(I) & "\" & NowDic, ""

? ? ? ? ? ? ? ? ? ? Num = Num + 1

? ? ? ? ? ? ? ? ? ? Workbooks(AWbName).ActiveSheet.Cells(Num, 1) = Num - 1

? ? ? ? ? ? ? ? ? ? Workbooks(AWbName).ActiveSheet.Cells(Num, 2) = NowDic

? ? ? ? ? ? ? ? ? ? Workbooks(AWbName).ActiveSheet.Cells(Num, 3) = "文件夾"

? ? ? ? ? ? ? ? ? ? Workbooks(AWbName).ActiveSheet.Cells(Num, 4) = Key(I)

? ? ? ? ? ? ? ? End If

? ? ? ? ? ? End If

? ? ? ? ? ? NowDic = Dir() '再找

? ? ? ? Loop

? ? ? ? I = I + 1

? ? Loop

? ? '****************************************************


? ? '**************遍歷目錄中的所有文件*******************

? ? For Each Key In DicList.Keys '查找所有目錄中的文件

? ? ? NowFile = Dir(Key & "\" & "*")

? ? ? Do While NowFile <> ""

? ? ? ? ? ? Num = Num + 1

? ? ? ? ? ? Workbooks(AWbName).ActiveSheet.Cells(Num, 1) = Num - 1

? ? ? ? ? ? Workbooks(AWbName).ActiveSheet.Cells(Num, 2) = NowFile

? ? ? ? ? ? Workbooks(AWbName).ActiveSheet.Cells(Num, 3) = "文件"

? ? ? ? ? ? Workbooks(AWbName).ActiveSheet.Cells(Num, 4) = Key

? ? ? ? ? ? NowFile = Dir()

? ? ? Loop

? ? Next

? ? '****************************************************

? ? Range("B1").Select

? ? MsgBox "共獲取" & Num & "個(gè)名稱。"

End Sub

'合并指定目錄下excel文件,第一個(gè)sheet內(nèi)容:將代碼復(fù)制到任意excel執(zhí)行

'使用前請(qǐng)修改SearchPath為實(shí)際路徑

Sub merge_excel()

? ? Const SearchPath = "C:\Users\lum15\Desktop\腳本"

? ? Dim MyName, AWbName

? ? Dim Wb As Workbook, WbN As String

? ? Dim G As Long

? ? Dim Num As Long

? ? Dim BOX As String

? ? Application.ScreenUpdating = False

? ? MyName = Dir(SearchPath & "\" & "*.xls*")

? ? AWbName = ActiveWorkbook.Name

? ? Num = 0

? ? Do While MyName <> ""

If MyName <> AWbName Then

Set Wb = Workbooks.Open(SearchPath & "\" & MyName)

Num = Num + 1

With Workbooks(AWbName).ActiveSheet.Cells(.Range("B65536").End(xlUp).Row + 2, 1) = Left(MyName, Len(MyName) - 4)

For G = 1 To Sheets.Count

Wb.Sheets(G).UsedRange.Copy .Cells(.Range("B65536").End(xlUp).Row + 1, 1)

Next

WbN = WbN & Chr(13) & Wb.Name

Wb.Close False

End With

End If

MyName = Dir

? ? Loop

? ? Range("B1").Select

? ? Application.ScreenUpdating = True

? ? MsgBox "共合并了" & Num & "個(gè)excel。"

End Sub

'按excel內(nèi)容整理文件夾內(nèi)容:將代碼復(fù)制到包含需要整理文件信息的excel執(zhí)行

'使用前請(qǐng)修改SearchPath為實(shí)際路徑

Sub collect()

? ? Const SearchPath = "D:\lum15\PycharmProjects\金票\Temp"


? ? Dim fs, MyName, AWbName

? ? Set fs = CreateObject("scripting.filesystemobject")

? ? Num = 1

? ? RDir = "jp"

? ? Col = 1


? ? If fs.FolderExists(RDir) Then

? ? ? ? fs.DeleteFolder (RDir)

? ? End If


? ? fs.CreateFolder (RDir)

? ? AWbName = ActiveWorkbook.Name


? ? Do While Num < Range("A65536").End(3).Row + 1

? ? ? ? MyName = Dir(SearchPath & "\" & "*")

? ? ? ? TName = Workbooks(AWbName).ActiveSheet.Cells(Num, Col)

? ? ? ? TPath = RDir & "\" & TName

? ? ? ? fs.CreateFolder (TPath)

? ? ? ? Do While MyName <> ""

? ? ? ? ? ? If MyName Like "*" & TName & "*" Then

? ? ? ? ? ? ? ? fs.CopyFile SearchPath & "\" & MyName, TPath & "\" & MyName

? ? ? ? ? ? End If

? ? ? ? ? ? MyName = Dir

? ? ? ? Loop

? ? ? ? Num = Num + 1

? ? Loop

MsgBox "結(jié)果文件夾" & RDir

End Sub

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容