Страницы: 1
RSS
Как получить продолжительность видеофайлов из созданного списка в excel с путями к файлам?
 
на форуме я нашёл тему с решением похожей задачи, что и у меня
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=message&FID=1&TID=123761&a...
но там рассматривается вариант, при котором надо указывать папку на компьютере, в которой находятся нужные видеофайлы, для получения их данных.
И при чём ещё и ограниченно выбираются расширения файлов ("*.avi;*.mp4;*.wmv;*.vob"), а если у меня есть и другие форматы видео, то как быть ???
Я создал и приложил свой вариант для наглядности, чтобы вы понимали как я хочу получать длительность видеофайлов.

Там создан список где указаны пути к каждому видеофайлу отдельно, типа
\\Максим-пк\2- музыка\2- Клипы и концерты\- Зарубежные исполнители\The Dream Academy - Life In A Northern Town.mp4
но путь также может быть и другим, например

D:\2- музыка\2- Клипы и концерты\- Зарубежные исполнители\The Dream Academy - Life In A Northern Town.mp4

И я создал типа кнопку синюю, при нажатии на которую, выполнялся бы макрос для получения только длительности каждого видеофайла из моего списка и длительность бы вставлялась напротив пути к файлу справа в столбце В.
И ещё у меня список в примере небольшой из 8 файлов, а может быть очень большим порядка 5000 файлов и мне надо чтобы макрос понимал и проверял есть ли в следующей нижней ячейке в столбце А путь к файлу, и если есть, то вставлял бы продолжительность файла, а если пути нет и ячейка пустая, то макрос бы перестал работать и остановился бы.

Для понятия или сравнения я скопировал из вышеуказанной темы на форуме один рабочий вариант получения нескольких данных файлов из указанной папки.
Но мне не нужно указывать папку с файлами, у меня уже есть созданный список файлов и мне нужно узнать только продолжительность это я так понял данные в коде objFolder.GetDetailsOf(File, 27)
Изменено: макс 1 - 09.04.2020 23:40:56
 
Код
Public Function GetDuration(sHref$) As Single
    Dim oFile As Object
    On Error Resume Next
    Set oFile = GetDesktop.parsename(sHref)
    GetDuration = TimeValue(oFile.Parent.getdetailsof(oFile, 27))
    Set oFile = Nothing
End Function
Private Function GetDesktop()
    Static Desktop As Object
    If Desktop Is Nothing Then
        Set Desktop = CreateObject("shell.application").Namespace(0)
    End If
    Set GetDesktop = Desktop
End Function

и используйте функцию на листе
Код
=GetDuration(A2)
или в макросе в цикле
 
макс 1,  в том варианте по ссылке задача была именно перебор указанных типов, миную иные да и сложность основная была именно в размере кадра, а у вас этот вопрос не стоит.
В целом GetDuration от Андрей Лящук решает задачу, но единственное, что чтоб не сбивать , я б сменил название второй процедуры.
По вопросам из тем форума, личку не читаю.
 
Цитата
Андрей Лящук написал:
=GetDuration(A2)
я вставил на листе 1 ваш код:
Код
Public Function GetDuration(sHref$) As Single
     Dim oFile As Object
     On Error Resume Next
     Set oFile = GetDesktop.parsename(sHref)
     GetDuration = TimeValue(oFile.Parent.getdetailsof(oFile, 27))
     Set oFile = Nothing
 End Function
 Private Function GetDesktop()
     Static Desktop As Object
     If Desktop Is Nothing Then
         Set Desktop = CreateObject("shell.application").Namespace(0)
     End If
     Set GetDesktop = Desktop
  End Function

и вставил формулу в ячейку В2
=GetDuration(A2)

НО НИЧЕГО НЕ РАБОТАЕТ !!  пишет ошибку в формуле #ИМЯ?

может кто-то сделать готовый вариант в excel и выложить тут, а то не сильно разбираюсь если мне отдельно какие-то кусочки пазла дают, а что куда надо вставлять ещё кроме этого я не знаю.. мне надо полностью расписать что и куда писать, а лучше как я сказал приложить файл в excel !!
Изменено: макс 1 - 10.04.2020 08:49:53
 
ну дык UDF должны в стандартном модуле лежать
 
Цитата
Андрей Лящук написал:
ну дык UDF должны в стандартном модуле лежать

Прикрепленные файлы
проба2.xlsm  (27.35 КБ)
Да спасибо, всё работает!  понял свою ошибку!
надо ваш код вставлять не в код листа, а в код в созданном модуле!
Изменено: макс 1 - 10.04.2020 09:43:02
 
Цитата
макс 1 написал:
понял свою ошибку
Ещё на досуге почитайте, что такое цитата.
Страницы: 1
Наверх