Страницы: 1
RSS
Как включить в xls - листы из других книг в определенном порядке
 
Доброго времени суток, уважаемые программисты VBA.
Помогите мне разобраться с нелегким делом.

Вот есть ряд книг xls, причем в каждой из них - всего один лист (название листа - соответствует названию книги).
У каждой книги в модуле листа имеется макрос, который имеет название как сама книга.

И есть главный файл xls.
В нем в таблицу - построчно вписаны названия вот этих "однолистовых" книг.
Как при щелчке на кнопку - включить в книгу "ГЛАВНЫЙ.xls" - эти листы - в том порядке, в каком они отображены в табличке ?

("Однолистовые" книги - лежат в той же папке, что и главная книга.)
 
После переноса листов переместите их согласно таблице.
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, зачем? При копировании вставлять после последнего. Сами в нужном порядке встанут.
Код
Sub collector()
Application.ScreenUpdating = False
With ThisWorkbook
    For Each MCell In Range("d5", Range("d5").End(xlDown))
        On Error Resume Next
        Set SourceWB = Workbooks.Open(Filename:=.Path & "\" & MCell & ".xls", ReadOnly:=True)
        If Err.Number = 0 Then
            Sheets(1).Copy After:=.Sheets(.Sheets.Count)
            SourceWB.Close
        End If
    Next
    .Sheets(1).Activate
End With
Application.ScreenUpdating = True
End Sub
Изменено: БМВ - 19.08.2019 09:08:07
По вопросам из тем форума, личку не читаю.
 
БМВ, код почему-то не копирует макросы на листах.
Точнее - не меняет адрес макроса, привязанного к кнопке на листе.

Скажите - как назначить каждому макросу на кнопке вставляемого листа - новый адрес ?

(То есть это будет то же самое название, но название книги в его адресе - сменится на 'ГЛАВНЫЙ.xls'!  )
Нужно чтобы макрос был привязан к листу, а не к какой-либо книге.
 
Цитата
БМВ написал:
Nordheim , зачем?
Предложил, как самый простой вариант. Подумал, что перемещение листов уже сделано, а листы перемещаются не так как нужно. Даже и в мыслях не было, чтон нужен макрос с нуля.
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
Даже и в мыслях не было, чтон нужен макрос с нуля.
Вот у меня тоже самое с переназначением макросов на кнопках.
Lizard2, ну вот  в каком месте было написано,  что вам это надо? Листы в том порядке? Макросы с ними переехали?
По вопросам из тем форума, личку не читаю.
 
БМВ, я подумал, что макросы будут запускаться даже после переноса в новую книгу, а они не запускаются.

Как же все-таки изменить код, чтобы и перенесенные макросы - с листов запускались ?
 
Скрытый текст


P.S.  Если использовать ActiveX кнопку, а не нарисованные бяки, то и мудрить ничего не надо было. Кнопка - собственность листа, код её тоже.
Изменено: БМВ - 19.08.2019 16:58:39
По вопросам из тем форума, личку не читаю.
 
БМВ, ясно.
Спасибо большое вам.
 
Цитата
БМВ написал:
Скрытый текст
Зачем так сложно?
Код
Sheets(1).Copy After:=.Sheets(.Sheets.Count)
ActiveSheet.DrawingObjects(1).OnAction = Mid(ActiveSheet.DrawingObjects(1).OnAction, InStr(ActiveSheet.DrawingObjects(1).OnAction, "!") + 1)
 
Цитата
RAN написал:
Зачем так сложно?
Андрей, ну не многим сложнее ;-) но я прикинул, что может быть несколько объектов , которые нужно подправить, но не все, ну и некоторые могут ссылаться   не на модуль листа, да и InStr(ActiveSheet.DrawingObjects(1).OnAction, "!")  не проверяя ставлю под сомнение, CodeName листа меняется.
По вопросам из тем форума, личку не читаю.
 
Погорячился. Был не прав.
Страницы: 1
Наверх