на форуме я нашёл тему с решением похожей задачи, что и у меня 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)
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
макс 1, в том варианте по ссылке задача была именно перебор указанных типов, миную иные да и сложность основная была именно в размере кадра, а у вас этот вопрос не стоит. В целом GetDuration от Андрей Лящук решает задачу, но единственное, что чтоб не сбивать , я б сменил название второй процедуры.
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 !!