Доброго времени суток, прошу помощи. Столкнулся с такой проблемой, не получается вывести в ячейки активного листа все имена связанных файлов с данной книгой ( где находиться макрос).
Доброго времени суток, прошу помощи. Столкнулся с такой проблемой, не получается вывести в ячейки активного листа все имена связанных файлов с данной книгой ( где находиться макрос).mss
покажите. Ваш код. которым Вы пытаетесь вывести в ячейки. имена связанных файлов. который Вы написали. но он не работает. или работает неправильно. он ведь есть? его можно показать? или он у Вас публичности боится?
давайте постепенно, ага.
покажите. Ваш код. которым Вы пытаетесь вывести в ячейки. имена связанных файлов. который Вы написали. но он не работает. или работает неправильно. он ведь есть? его можно показать? или он у Вас публичности боится?ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
в том и проблема, что сам не могу написать код, а посмотреть как он выглядит даже не получается. Не смог найти в просторах инета даже что либо близко похожее.
в том и проблема, что сам не могу написать код, а посмотреть как он выглядит даже не получается. Не смог найти в просторах инета даже что либо близко похожее.mss
надстройка не подойдет, макрос надо вписать в файл который будет проверочным для документа. Максимально будет 40 имен, т.е. 12 файлов по одному листу из них, и вот именно имя листа важно
надстройка не подойдет, макрос надо вписать в файл который будет проверочным для документа. Максимально будет 40 имен, т.е. 12 файлов по одному листу из них, и вот именно имя листа важноmss
вот, кажется, оно: http://www.exceltip.com/links-i....el.html выводит не все внешние ссылки, а только те, которые есть в формулах ячеек книги. т.е. не обрабатывает ссылки в именах, объектах и т.д. но, возможно, это и не надо.
кстати - заметьте, что внешняя ссылка не обязательно содержит имя листа.
вот, кажется, оно: http://www.exceltip.com/links-i....el.html выводит не все внешние ссылки, а только те, которые есть в формулах ячеек книги. т.е. не обрабатывает ссылки в именах, объектах и т.д. но, возможно, это и не надо.
кстати - заметьте, что внешняя ссылка не обязательно содержит имя листа. ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Сообщение отредактировал ikki - Воскресенье, 17.08.2014, 00:11
конечно спасибо за ссылки но что то все не то, по первой ссылке выдает ваш вариант, а по второй в ячейки все формулы на внешние ссылки, хотя второй макрос возможно можно дописать в преобразование значения и как то отделить сам путь от формулы наверное, получается...
конечно спасибо за ссылки но что то все не то, по первой ссылке выдает ваш вариант, а по второй в ячейки все формулы на внешние ссылки, хотя второй макрос возможно можно дописать в преобразование значения и как то отделить сам путь от формулы наверное, получается...mss
брать текст формулы, искать символы xls], xlsx] и т.п., после квадратной скобки всё, что до восклицательного знака или одинарной кавычки - имя листа. хотя там может быть и просто имя (уровня книги)
брать текст формулы, искать символы xls], xlsx] и т.п., после квадратной скобки всё, что до восклицательного знака или одинарной кавычки - имя листа. хотя там может быть и просто имя (уровня книги)ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Сообщение отредактировал ikki - Воскресенье, 17.08.2014, 00:19
Sub ListExtLinks() Dim ws As Worksheet, urf As Range, r As Range, re As Object, d As Object, m As Object, i&, dk()
Set re = CreateObject("vbscript.regexp") re.Pattern = "(?:\[(.+?xls[xmb]?)])([^!']+)": re.Global = True Set d = CreateObject("scripting.dictionary")
For Each ws In ThisWorkbook.Worksheets Set urf = ws.UsedRange If Not urf Is Nothing Then For Each r In urf.Cells If r.Formula Like "*xls?]*" Or r.Formula Like "*xls]*" Then Set m = re.Execute(r.Formula) For i = 1 To m.Count: d(m(i - 1).submatches(0) & "|" & m(i - 1).submatches(1)) = 0&: Next End If Next End If Next
If d.Count Then dk = d.keys For i = 1 To d.Count ActiveSheet.Cells(i, 1).Resize(, 2).NumberFormat = "@" ActiveSheet.Cells(i, 1) = Split(dk(i - 1), "|")(0) ActiveSheet.Cells(i, 2) = Split(dk(i - 1), "|")(1) Next End If End Sub
[/vba]
ну, примерно так: [vba]
Код
Sub ListExtLinks() Dim ws As Worksheet, urf As Range, r As Range, re As Object, d As Object, m As Object, i&, dk()
Set re = CreateObject("vbscript.regexp") re.Pattern = "(?:\[(.+?xls[xmb]?)])([^!']+)": re.Global = True Set d = CreateObject("scripting.dictionary")
For Each ws In ThisWorkbook.Worksheets Set urf = ws.UsedRange If Not urf Is Nothing Then For Each r In urf.Cells If r.Formula Like "*xls?]*" Or r.Formula Like "*xls]*" Then Set m = re.Execute(r.Formula) For i = 1 To m.Count: d(m(i - 1).submatches(0) & "|" & m(i - 1).submatches(1)) = 0&: Next End If Next End If Next
If d.Count Then dk = d.keys For i = 1 To d.Count ActiveSheet.Cells(i, 1).Resize(, 2).NumberFormat = "@" ActiveSheet.Cells(i, 1) = Split(dk(i - 1), "|")(0) ActiveSheet.Cells(i, 2) = Split(dk(i - 1), "|")(1) Next End If End Sub