|
谢谢杜老师赐代码,经测试,非常好。
杜老师,另辟蹊径,很好的一种方法。
问一句:能否不用循环的方式,直接获取媒体时间长?
我自己将源代码变通,写出了能用的代码,显然不你这啰嗦不少,也算是一种吧:
代码如下:
Sub 获取对应文件时间长()
'请在VBE/工具/引用中勾选对于MICROSOFT SHELL CONTROLS AND AUTOMATION
Dim SHL As New Shell32.Shell
Dim SHFD As Shell32.Folder
Dim F As Object
Dim prr()
With Sheet2
rw = .Cells(65536, 3).End(3).Row
For i = 2 To rw
txt = .Cells(i, 3).Text
cmt1 = .Cells(i, 3).Comment.Text
cmt2 = "." & .Cells(i, 5).Comment.Text
txt1 = .Cells(i, 3).Text & cmt2
txt2 = Left(cmt1, Len(cmt1) - Len(txt1) - 1)
ReDim Preserve prr(1 To rw - 1, 1 To 2)
prr(i - 1, 1) = txt1
prr(i - 1, 2) = txt2
Next
For ii = 1 To UBound(prr)
FolderSpec = prr(ii, 2)
Set SHFD = SHL.Namespace(FolderSpec)
For Each F In SHFD.Items
If F.Name = prr(ii, 1) Then
n = n + 1
.Cells(n + 1, "G") = SHFD.GetDetailsOf(F, 27)
End If
Next
Next
'.Cells(rw,"E") = worksheetfunction.SumIf(
End With
End Sub
但我还对四楼的代码念念不忘,如果算是一种方法,那就有三种了。
只可惜,我测试的时候,鼠标指针,一直在转圈,代码一直在运行,没有结果。
等了20多分钟,强行终止代码运行。
我想不会是代码运行这么慢吧?
若真有这么慢,这段代码也没有什么价值。
有时间,杜老师试试,指点指点。
谢谢了。
|
|