Привет, wvlas если пути файлов записаны именно так, в одну строку, то можно попробовать:
[vba]
Код
Sub ert() Dim s$, t$, i& s = Range("A17") With CreateObject("vbscript.regexp") .ignorecase = True: .Global = True .Pattern = "(?!\\)([а-я0-9 ])+(?=\.)" With .Execute(s) For i = 0 To .Count - 1 t = t & ", " & .Item(i) Next i End With End With Range("A18") = Mid(t, 3) End Sub
[/vba]
или
[vba]
Код
Sub tt() Dim s$, sp, spp, i& s = Range("A17") sp = Split(s, "."): s = "" For i = 0 To UBound(sp) - 1 spp = Split(sp(i), "\") s = s & ", " & spp(UBound(spp)) Next i Range("A18") = Mid(s, 3) End Sub
[/vba]
Привет, wvlas если пути файлов записаны именно так, в одну строку, то можно попробовать:
[vba]
Код
Sub ert() Dim s$, t$, i& s = Range("A17") With CreateObject("vbscript.regexp") .ignorecase = True: .Global = True .Pattern = "(?!\\)([а-я0-9 ])+(?=\.)" With .Execute(s) For i = 0 To .Count - 1 t = t & ", " & .Item(i) Next i End With End With Range("A18") = Mid(t, 3) End Sub
[/vba]
или
[vba]
Код
Sub tt() Dim s$, sp, spp, i& s = Range("A17") sp = Split(s, "."): s = "" For i = 0 To UBound(sp) - 1 spp = Split(sp(i), "\") s = s & ", " & spp(UBound(spp)) Next i Range("A18") = Mid(s, 3) End Sub
Sub t() s = "file=""D:\Папка\Лицензия.mpg"" file=""D:\Мамка\Ролик.mov"" file=""D:\Дедка\Любое имя.avi""" With CreateObject("vbscript.regexp") .Pattern = "\\([^\\""]*)(\.[^\.]+)""" .Global = True Set mo = .Execute(s) End With If mo.Count Then For i = 0 To mo.Count - 1 Debug.Print mo(i).submatches(0) Next End If End Sub
[/vba]
если у каждого файла есть расширение: [vba]
Код
Sub t() s = "file=""D:\Папка\Лицензия.mpg"" file=""D:\Мамка\Ролик.mov"" file=""D:\Дедка\Любое имя.avi""" With CreateObject("vbscript.regexp") .Pattern = "\\([^\\""]*)(\.[^\.]+)""" .Global = True Set mo = .Execute(s) End With If mo.Count Then For i = 0 To mo.Count - 1 Debug.Print mo(i).submatches(0) Next End If End Sub
для возможного случая с отсутствием расширений для некоторых файлов "чистого" решения на регулярках не придумал. но, думаю, такой вариант будет даже быстрее. да и понятно без комментариев.
[vba]
Код
Sub t() s = "file=""D:\Папка\Лицензия.mpg"" file=""D:\Мамка\Ролик"" file=""D:\Дедка\Любое имя.avi""" With CreateObject("vbscript.regexp") ' .Pattern = "\\([^\\""]*)(\.[^\.]+)""" .Pattern = "\\([^\\""]*)""" .Global = True Set mo = .Execute(s) End With If mo.Count Then For i = 0 To mo.Count - 1 s = mo(i).submatches(0) If InStrRev(s, ".") Then s = Left(s, InStrRev(s, ".") - 1) Debug.Print s Next End If End Sub
[/vba]
для возможного случая с отсутствием расширений для некоторых файлов "чистого" решения на регулярках не придумал. но, думаю, такой вариант будет даже быстрее. да и понятно без комментариев.
[vba]
Код
Sub t() s = "file=""D:\Папка\Лицензия.mpg"" file=""D:\Мамка\Ролик"" file=""D:\Дедка\Любое имя.avi""" With CreateObject("vbscript.regexp") ' .Pattern = "\\([^\\""]*)(\.[^\.]+)""" .Pattern = "\\([^\\""]*)""" .Global = True Set mo = .Execute(s) End With If mo.Count Then For i = 0 To mo.Count - 1 s = mo(i).submatches(0) If InStrRev(s, ".") Then s = Left(s, InStrRev(s, ".") - 1) Debug.Print s Next End If End Sub