作者:绿色风
分类:
时间:2022-08-18
浏览:106
楼主 xmyjk |
Q:E盘下有个名叫“aa”的文件夹,“aa”文件夹下有17个子文件夹,子文件夹的名字为:“00、01、02、03、……、16”,每个子文件夹下有不定数量(至少1个)的“*.wma”格式的文件。 是否能通过VBA提取每个子文件夹下所有“*.wma”格式文件的文件名以及音频的时长呢?
A:- Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
- Sub t()
- Dim arr(0 To 16) As String, i%, j&, myFile$, m&, brr() As String
- For i = 0 To 16
- arr(i) = "e:\aa\" & Format(i, "00") & "\"
- myFile = Dir(arr(i) & "*.wma")
- Do While myFile <> ""
- m = m + 1
- ReDim Preserve brr(1 To 3, 1 To m) As String
- brr(1, m) = Format(i, "00")
- brr(2, m) = Split(myFile, ".wma")(0)
- brr(3, m) = GetMusicLengthString(arr(i) & myFile)
- myFile = Dir
- Loop
- Next
- [a2].Resize(UBound(brr, 2), 3) = Application.Transpose(brr)
- End Sub
- Public Function GetMusicLengthString(FileName As String) As String
- Dim RefStr As String * 64
- mciSendString "status " & CreateObject("Scripting.FileSystemObject").GetFile(FileName).ShortPath & " length", RefStr, Len(RefStr), 0
- GetMusicLengthString = CStr(Format(Int(Val(RefStr) \ 1000 \ 60), "00") & ":" & Format(Val(RefStr) \ 1000 Mod 60, "00.") & Val(RefStr) \ 100 Mod 10)
- End Function
该帖已经同步到 xmyjk的微博 最终希望达到的效果.rar |
2楼 windimi007 |
弦月版主实在是太棒了,再次感谢! |
3楼 亡者天下 |
版主一出马,就是不一样,学习了! |
4楼 JOYARK1958 |
謝謝提供學習下載中 |
5楼 TokiGi |
版主威武~
我运行下载的文档
[a2].Resize(UBound(brr, 2), 3) = Application.Transpose(brr)
提示上面这句有错误?是否是07版引起的呢? |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一