伊莉討論區
標題:
檔名有 VBA 無法辨別的字元 , 如何查出檔案大小 ?
[打印本頁]
作者:
Marry17Henry
時間:
2017-8-9 07:53 PM
標題:
檔名有 VBA 無法辨別的字元 , 如何查出檔案大小 ?
本帖最後由 darkjack 於 2017-8-11 09:03 PM 編輯
又遇到困難了 , 要列出某資料夾內檔案名稱 , 可以使用下列方式 :
File_Name = Dir("D:\Movie\*.mp4")
While File_Name <> ""
...
...
File_Name = Dir()
Wend
複製代碼
如果要查出這些檔案大小 , 可以用 FileLen(File_Name) 指令 ,
但如果遇到檔名有 VBA 無法辨別的字元 , 例如 MMND-130 羽咲美晴.mp4
VBA 跑出的結果會變成 File_Name ="MMND-130 羽?美晴.mp4"
這還可以忍受 , 但如果要查出檔案大小 , 會因檔名不正確而產生程式錯誤 ,
該怎麼查出檔案大小呢 ?
作者:
Marry17Henry
時間:
2017-8-11 07:25 PM
本帖最後由 darkjack 於 2017-8-11 09:04 PM 編輯
想起 2,30 年前 DOS 年代的 Dir 指令 , 可以把某路徑下的資料夾 , 檔案 全部一次 List 出來 ,
包含 : FileDateTime , Size , Name
還有用 DOS 的 .bat 批次檔案 來執行 DOS 指令
在 Excel VBA 中 :
Open "D:\Dir_Files.bat" For Output As #1
Print #1, "D:"
Print #1, "Cd Movie"
Print #1, "Dir > D:\File_Size_Name.txt"
Close #1
Shell ("D:\Dir_Files.bat")
複製代碼
結果就出來了 : ( 開啟 D:\File_Size_Name.txt 檔案 )
磁碟區 D 中的磁碟是 Data
磁碟區序號: BA77-7966
D:\Movie 的目錄
2017/08/09 下午 07:21 <DIR> .
2017/08/09 下午 07:21 <DIR> ..
2017/08/07 上午 06:07 4,857,133,080 ABP-623 愛音麻里亞 .mp4
2017/08/03 下午 06:16 3,723,925,144 MEYD-283 東凜 .mp4
2017/08/07 下午 12:23 3,699,664,260 MMND-130 羽?美晴 .mp4
2017/08/07 下午 12:48 3,736,532,029 MMND-131 深田奈奈 .mp4
4 個檔案 16,017,254,513 位元組
2 個目錄 939,158,974,464 位元組可用
再數數格子 , 就可算出檔案大小了 , 即使檔名有 VBA 無法辨識的字元 "羽?美晴" 。
作者:
tryit244178
時間:
2017-8-12 11:48 AM
本帖最後由 tryit244178 於 2017-8-13 12:03 PM 編輯
噢…本來想叫你參考這頁的…
http://blog.bestdaylong.com/2010/01/excel_26.html
https://msdn.microsoft.com/zh-tw/library/aa711216(v=vs.71).aspx
補一下程式碼:
Public Sub test()
Dim count As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
Set getFiles = fso.GetFolder("D:").Files '取得路徑下的所有檔案
count = 0
For Each fileList In getFiles
If CheckExtension(fileList.name, "mp3") Then
count = count + 1
Sheet1.Cells(count, 1).Value = fileList.name
Sheet1.Cells(count, 2).Value = fileList.Size
End If
Next fileList
End Sub
Private Function CheckExtension(ByVal path As String, ByVal extension As String) As Boolean
CheckExtension = False
If LCase(Right(path, Len(extension) + 1)) = "." & LCase(extension) Then
CheckExtension = True
End If
End Function
複製代碼
作者:
Marry17Henry
時間:
2017-8-14 07:27 PM
感謝 tryit244178 大 ,
GetFolder.Files 真是好用 ,
能同時抓取 FileName & FilsSize
還能辨別 難字 , 日文字
不用再為檔名煩惱了 , 謝謝 。
歡迎光臨 伊莉討論區 (http://a401.file-static.com/)
Powered by Discuz!