ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: yy10

如何使用vba获取一个文件夹下所有视频文件的总长度

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-10-12 21:40 | 显示全部楼层
这么说,不能统计时长,与音视频文件格式无关,是吗?是由于文件本身无时长属性是吗?

TA的精华主题

TA的得分主题

发表于 2018-1-3 12:43 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Shell32太强大了,可以获取所有的属性,学习了,感谢。

TA的精华主题

TA的得分主题

发表于 2018-1-3 12:58 | 显示全部楼层
赞一个 留着日后需要的时候看

TA的精华主题

TA的得分主题

发表于 2018-1-24 16:47 | 显示全部楼层
duquancai 发表于 2017-10-11 02:07
Sub GetFileDuration()
    Dim O As Object, fd As Object, F As Object
    Set O = CreateObject("S ...

请教,使用F.Name得到的是一个不带后缀的文件名,这要怎么变成带有后缀的呢??

TA的精华主题

TA的得分主题

发表于 2018-5-9 23:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
duquancai 发表于 2017-10-12 18:19
Sub GetFileDuration()
    Dim O As Object, fd As Object, F As Object
    Set O = CreateObject("S ...

照着您这个试成功了。还有2个问题请教您:1.如何让文件夹是选取的,而不是固定的"F:\音视频\汽车音乐\新歌6")。2.如果这个文件夹下还有子文件夹,子文件夹中也有很多视频文件,怎么一并读出来。

TA的精华主题

TA的得分主题

发表于 2020-5-17 23:33 | 显示全部楼层
weiyingde 发表于 2017-10-12 21:40
这么说,不能统计时长,与音视频文件格式无关,是吗?是由于文件本身无时长属性是吗?

我电脑要把时长改为长度,仅供参考

TA的精华主题

TA的得分主题

发表于 2020-5-18 03:14 | 显示全部楼层
本帖最后由 x-xx-xx 于 2020-5-19 15:21 编辑
  1. Sub S110_()
  2.     '
  3.     Dim 编号01_Shell
  4.     Dim 编号02_文件夹
  5.     Dim 编号03_文件
  6.     Dim 编号04_第几个标题
  7.     Dim 编号05_标题
  8.     Dim 编号06_
  9.     Dim 编号07_
  10.     Dim 编号08_
  11.     Dim 编号09_
  12.     Dim 编号10_
  13.     '
  14.     Set 编号01_Shell = CreateObject("Shell.Application")
  15.     Set 编号02_文件夹 = 编号01_Shell.Namespace("D:\BaiduNetdiskDownload\新建文件夹")
  16.     '
  17.     For Each 编号03_文件 In 编号02_文件夹.Items
  18.         '
  19.         编号04_第几个标题 = 0
  20.         '
  21.         Do While 编号04_第几个标题 < 100
  22.             '
  23.             编号04_第几个标题 = 编号04_第几个标题 + 1
  24.             '
  25.             编号05_标题 = 编号02_文件夹.GetDetailsOf(编号02_文件夹.Items, 编号04_第几个标题)
  26.             '
  27.             If 编号05_标题 = "长度" And 编号02_文件夹.GetDetailsOf(编号03_文件, 编号04_第几个标题) <> "" Then
  28.                 '
  29.                 MsgBox 编号03_文件.Name & "文件的时长:" & 编号02_文件夹.GetDetailsOf(编号03_文件, 编号04_第几个标题)
  30.                 '
  31.                 Exit Do
  32.                 '
  33.             End If
  34.             '
  35.         Loop
  36.         '
  37.         If 编号04_第几个标题 = 100 Then
  38.             '
  39.             MsgBox 编号03_文件.Name & "文件无时长属性值!"
  40.             '
  41.         End If
  42.         '
  43.     Next
  44.     '
  45. End Sub
复制代码
  1. Sub S111_()
  2.     '------------------------------------------------------------
  3.     Dim 编号01_Shell
  4.     Set 编号01_Shell = CreateObject("Shell.Application")
  5.     'Dim 编号01_Shell As New Shell32.Shell
  6.     Dim 编号02_文件夹
  7.     Dim 编号03_文件集合
  8.     Dim 编号04_标题
  9.     Dim 编号05_第几个标题
  10.     Dim 编号06_标题个数
  11.     Dim 编号07_数组()
  12.     Dim 编号08_文件个数
  13.     Dim 编号09_文件
  14.     Dim 编号10_第几个文件
  15.     Dim 编号11_数组()
  16.     Dim 编号12_文件名称
  17.     Dim 编号13_第几列
  18.     Dim 编号14_
  19.     Dim 编号15_
  20.     Dim 编号16_
  21.     Dim 编号17_
  22.     Dim 编号18_
  23.     Dim 编号19_
  24.     Dim 编号20_
  25.     '------------------------------------------------------------
  26.     Set 编号02_文件夹 = 编号01_Shell.Namespace("D:\BaiduNetdiskDownload\新建文件夹")
  27.     Set 编号03_文件集合 = 编号02_文件夹.Items
  28.     编号08_文件个数 = 编号03_文件集合.Count
  29.     '------------------------------
  30.     编号06_标题个数 = 0
  31.     '
  32.     For 编号05_第几个标题 = 1 To 800 Step 1
  33.         '
  34.         编号04_标题 = 编号02_文件夹.GetDetailsOf(编号03_文件集合, 编号05_第几个标题)
  35.         '
  36.         If 编号04_标题 = "" Then
  37.             '退出循环
  38.             '
  39.             Exit For
  40.             '
  41.         Else
  42.             '继续
  43.             '
  44.             编号06_标题个数 = 编号06_标题个数 + 1
  45.             '
  46.         End If
  47.         '
  48.     Next
  49.     '------------------------------
  50.     Erase 编号11_数组
  51.     ReDim Preserve 编号11_数组(1 To 1, 1 To 编号06_标题个数)
  52.     '------------------------------
  53.     编号06_标题个数 = 0
  54.     '
  55.     For 编号05_第几个标题 = 1 To 800 Step 1
  56.         '
  57.         编号04_标题 = 编号02_文件夹.GetDetailsOf(编号03_文件集合, 编号05_第几个标题)
  58.         '
  59.         If 编号04_标题 = "" Then
  60.             '退出循环
  61.             '
  62.             Exit For
  63.             '
  64.         Else
  65.             '继续
  66.             '
  67.             编号06_标题个数 = 编号06_标题个数 + 1
  68.             '
  69.             编号11_数组(1, 编号06_标题个数) = 编号04_标题
  70.             '
  71.         End If
  72.         '
  73.     Next
  74.     '------------------------------
  75.     'Worksheets("1").Activate
  76.     'Worksheets("1").Cells.ClearContents
  77.     'Worksheets("1").Range("B1").Resize(UBound(编号11_数组, 1), UBound(编号11_数组, 2)) = 编号11_数组
  78.     '------------------------------------------------------------
  79.     Erase 编号07_数组
  80.     ReDim Preserve 编号07_数组(1 To 编号08_文件个数 + 1, 1 To 编号06_标题个数 + 1)
  81.     '------------------------------
  82.     For 编号13_第几列 = 1 To UBound(编号11_数组, 2) Step 1
  83.         '
  84.         编号07_数组(1, 编号13_第几列 + 1) = 编号13_第几列 & "." & 编号11_数组(1, 编号13_第几列)
  85.         '
  86.     Next
  87.     '
  88.     'Worksheets("1").Activate
  89.     'Worksheets("1").Cells.ClearContents
  90.     'Worksheets("1").Range("A1").Resize(UBound(编号07_数组, 1), UBound(编号07_数组, 2)) = 编号07_数组
  91.     '------------------------------------------------------------
  92.     编号10_第几个文件 = 0
  93.     '
  94.     For Each 编号09_文件 In 编号03_文件集合
  95.         '
  96.         编号10_第几个文件 = 编号10_第几个文件 + 1
  97.         '
  98.         编号12_文件名称 = 编号09_文件.Name
  99.         编号07_数组(编号10_第几个文件 + 1, 1) = 编号12_文件名称
  100.         '
  101.     Next
  102.     '------------------------------
  103.     'Worksheets("1").Activate
  104.     'Worksheets("1").Cells.ClearContents
  105.     'Worksheets("1").Range("A1").Resize(UBound(编号07_数组, 1), UBound(编号07_数组, 2)) = 编号07_数组
  106.     '------------------------------------------------------------
  107.     编号10_第几个文件 = 0
  108.     '
  109.     For Each 编号09_文件 In 编号03_文件集合
  110.         '
  111.         编号10_第几个文件 = 编号10_第几个文件 + 1
  112.         '
  113.         '编号12_文件名称 = 编号09_文件.Name
  114.         '编号07_数组(编号10_第几个文件 + 1, 1) = 编号12_文件名称
  115.         '
  116.         For 编号05_第几个标题 = 1 To 编号06_标题个数 Step 1
  117.             '
  118.             编号04_标题 = 编号02_文件夹.GetDetailsOf(编号09_文件, 编号05_第几个标题)
  119.             '
  120.             编号07_数组(编号10_第几个文件 + 1, 编号05_第几个标题 + 1) = 编号04_标题
  121.             '
  122.         Next
  123.         '
  124.     Next
  125.     '------------------------------
  126.     Worksheets("1").Activate
  127.     Worksheets("1").Cells.ClearContents
  128.     Worksheets("1").Range("A1").Resize(UBound(编号07_数组, 1), UBound(编号07_数组, 2)) = 编号07_数组
  129.     '------------------------------------------------------------
  130. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2022-11-15 11:48 | 显示全部楼层
duquancai 发表于 2017-10-12 18:19
Sub GetFileDuration()
    Dim O As Object, fd As Object, F As Object
    Set O = CreateObject("S ...

好代码,学习了!如果要增加遍历文件夹和子文件夹该如何写呢?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 21:17 , Processed in 0.031894 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表