ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 如何运用VBA提取音频的文件名及时长?

如何运用VBA提取音频的文件名及时长?

作者:绿色风 分类: 时间:2022-08-18 浏览:106
楼主
xmyjk
Q:E盘下有个名叫“aa”的文件夹,“aa”文件夹下有17个子文件夹,子文件夹的名字为:“00、01、02、03、……、16”,每个子文件夹下有不定数量(至少1个)的“*.wma”格式的文件。
是否能通过VBA提取每个子文件夹下所有“*.wma”格式文件的文件名以及音频的时长呢?

A:
  1. 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
  2. Sub t()
  3. Dim arr(0 To 16) As String, i%, j&, myFile$, m&, brr() As String
  4. For i = 0 To 16
  5.    arr(i) = "e:\aa\" & Format(i, "00") & "\"
  6.    myFile = Dir(arr(i) & "*.wma")
  7.    Do While myFile <> ""
  8.       m = m + 1
  9.       ReDim Preserve brr(1 To 3, 1 To m) As String
  10.       brr(1, m) = Format(i, "00")
  11.       brr(2, m) = Split(myFile, ".wma")(0)
  12.       brr(3, m) = GetMusicLengthString(arr(i) & myFile)
  13.       myFile = Dir
  14.    Loop
  15. Next
  16. [a2].Resize(UBound(brr, 2), 3) = Application.Transpose(brr)
  17. End Sub

  18. Public Function GetMusicLengthString(FileName As String) As String
  19.     Dim RefStr As String * 64
  20.     mciSendString "status " & CreateObject("Scripting.FileSystemObject").GetFile(FileName).ShortPath & " length", RefStr, Len(RefStr), 0
  21.     GetMusicLengthString = CStr(Format(Int(Val(RefStr) \ 1000 \ 60), "00") & ":" & Format(Val(RefStr) \ 1000 Mod 60, "00.") & Val(RefStr) \ 100 Mod 10)
  22. 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总版主之一

评论列表
sitemap