Надстройка, позволяющая загрузить из выбранной папки список файлов на лист Excel.Автор: VictorM Особенности надстройки:
Основой для надстройки загрузки списка файлов послужила функция FilenamesCollection Вы также можете посмотреть другие примеры загрузки списка файлов на лист Excel
Для запуска главной формы надстройки запустите прикреплённый к статье файл, Далее, выберите папку, в которой будет производиться поиск файлов,
|
|||||||


Комментарии
Вообще-то типичное положение вещей. Возникнуть оно может из-за неоднозначных имен процедур и функций.
Просто из-за того, что добавляя модули и формы из разных проектов, надстроек могут продублироваться эти самые имена.
В частности, у меня была такая ситуация, когда я делал собственную надстройку из "кусков" кодов и надстроек автора сайта.
Настоятельно рекомендуется, при таком вот добавлении, каждый раз запускать Debug - Compile VBAProject.
В некоторых случаях требуется отобразить листа файла надстройки перед копированием.
(временно установить свойство IsAddin в FALSE)
И вообще, кому это надо - мне, или вам?
Если вам - то почему экономите слова (даже не говоря номер и описание ошибки)?
Мне надоело играть в телепата, и строить предположения, не видя файла.
Обращайтесь на форумы по Excel, выкладывайте там свою надстройку, - спецы помогут разобраться в причинах.
Один в один сделано. Тишина...
А лист СПИСОК, который вы пытаетесь скопировать из надстройки, он точно видимый?
Убедитесь, что лист видимый, задайте ему кодовое имя (выделено на скриншоте), и пробуйте упрощённый макрос:
On Error Resume Next ' на случай, если ни одна книга не открыта
spisok.Copy Worksheets(Worksheets.Count)
End Sub
Засада...
Не работает решение...нет даже ошибок и лист не появляется. Название листа и макроса точны.
Эх, много лишнего у вас в коде...
Попробуйте так - ошибка должна исчезнуть:
On Error Resume Next ' на случай, если ни одна книга не открыта
ThisWorkbook.Worksheets("Список").Copy _
ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count)
End Sub
Обратите внимание - я использую Worksheets вместо Sheets
Можно ли вопрос не по теме...
У меня в моей надстройке есть листы, которые выводятся соответственно в любой книге. Раньше все работало, но после серии добавлений разных модулей и форм стала появляться ошибка и к сожалению я не могу "откатиться" назад, много прошло времени.
Макрос вызова листа у меня:
Sub Вывести_Лист_Список() ' Макрос кнопки в надстройке
Dim wbFrom As Workbook
Set wbFrom = Workbooks("НАЗВАНИЕ_НАДСТРОЙКИ.xlam")
Dim wbTo As Workbook
Set wbTo = ActiveWorkbook
Dim n As Integer
n = wbTo.Sheets.Count
wbFrom.Sheets("НАЗВАНИЕ-ЛИСТА").Copy After:=wbTo.Sheets(n)
Set wbFrom = Nothing
Set wbTo = Nothing
End Sub
Ошибка на : wbFrom.Sheets("НАЗВАНИЕ-ЛИСТА").Copy After:=wbTo.Sheets(n)
Есть ли решение ?
Может есть другие способы вызова листа.
Браво Маэстро...!
Все заработало. Спасибо.
Значит, где-то в глубинах вашего файла есть глобальная переменная путь или PS, определённая с типом Object, Range или т.п.
Решение - заменить названия переменных:
FolderPath = ""
PathSep = Application.PathSeparator
With Application.FileDialog(msoFileDialogFolderPicker)
.ButtonName = "Выбрать"
.Title = "Выберите папку"
.InitialFileName = "c:\"
If .Show = -1 Then FolderPath = .SelectedItems(1)
If Not Right$(FolderPath, 1) = PathSep Then FolderPath = FolderPath & PathSep
End With
Me.tb_Путь.Value = FolderPath
End Sub
После этого всё должно заработать и в вашем файле.
PS: Отсюда вывод: глобальные переменные в большой программе - это зло, от них надо избавляться.
Если ничего и никуда не копировать, то в оригинале работает отлично...Не могу понять, как связана данная ошибка при переносе модуля и формы в другой файл...!?
Спасибо за реакцию на вопрос.
Еще раз повторюсь, я в свою надстройку скопировал Ваши модуль и форму. При запуске макроса в моей надстройке "ВызовФормы" появляется форма. При нажатии на выбор папки появляется ошибка (выше указал). Ошибка на второй строке в форме " ПУТЬ = "" "
Код выбора папки, в принципе, простейший, - таких ошибок выдавать не должен.
Ещё раз протестировал надстройку в Excel 2003 и 2007 - что только ей не задавал в качестве папки, и ну никак не смог получить ошибку.
Так что, скорее всего, вы что-то намудрили при копировании.
Хотя бы скажите, на какой строке кода вылетает ошибка (какая строка макроса подсвечивается желтым?)
Если не копировать ничего никуда, а просто запустить прикреплённый файл, - тоже вылетает ошибка?
PS: Я хоть и не автор надстройки, но участвовал в доработке формы
Уважаемый автор, я с удовольствием отслеживаю Ваши решения и собираю интересные решения в одну надстройку для себя. Вот и это решение "тупо" скопировал (модуль и форму) к себе, но при выборе папки выдает ошибку
Run-time error "424"
Object Required
Ничего не могу поделать...
Что не правильно ?
Отправить комментарий