Страницы: 1 2 След.
RSS
Макрос: Перенести Лист(N) в другую книгу
 
День добрый!
через поиск не нашел подходящего.
Задача: На активном листе делаю кнопочку с макросом, который по указанному пути переносит/копирует (если есть возможность сделать выбор) весь Лист (активный) с данными в др книгу.

Такое ведь можно делать?
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Сначала записать макрорекодером...
 
Цитата
Александр написал: Такое ведь можно делать?
конечно можно. Только не понятно где будет
Цитата
Александр написал: по указанному пути
но Если кнопка на листе, а лист весь перенесется то , ту два варианта, либо макрос перенесется вместе с листом, либо на перенесенном листе кнопка работать не будет
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
либо макрос перенесется вместе с листом, либо на перенесенном листе кнопка работать не будет
... либо и то, и другое — если макросы в модуле листа есть, но кнопочка вызывает не их.
 
vikttur, А как? если только при открытой книге
Цитата
Nordheim написал:
но Если кнопка на листе, а лист весь перенесется то
Это уже не важно. Главное что бы срабатывал на активный лист (а то в каждой книге постоянно дополняются новыми листами, а их сейчас уже по 100)  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Цитата
Александр написал:  vikttur , А как?
Записать -> посмотреть -> попытаться разобраться -> попытаться  изменить.
Хоть что-то из этой цепочки пробовали? Если да - показываете пример с полученным чудом и просите дальнейшей помощи.
 
Цитата
Александр написал: Это уже не важно
Так если кнопка на одном листе только это т лист и можно будет перенести, в чем смысл гонять один?
Или Вы собираетесь на всех 100 листах кнопки сделать, а стоит ли овчинка выделки? Честно говоря не вижу смысла в реализации данного вопроса.
м.б. Вам подумать как это сделать без кнопок на листе, и воспользовавшись советом от vikttur, записать макрорекодером а потом юзать макрос на активных листах в активной книге.
"Все гениальное просто, а все простое гениально!!!"
 
... или выбирать переносимые листы в ListBox'е...
 
vikttur, Остановился только на "думал" тк
1. Требуется указать путь (тк этих книг несколько) и делать на каждую отдельно кнопку
2. Требуется открывать каждый раз книгу в которую перенести этот лист
По отдельности это еще можно, а все вместе становится делом "муторным"

Цитата
Nordheim написал:
на всех 100 листах кнопки сделать, а стоит ли овчинка выделки
У меня шаблон по которому создаются эти все листы с данными. Я эту кнопку "впаяю" в этот шаблон и все дела. А по уже созданным  - в ручную.
Цитата
Nordheim написал:
Честно говоря не вижу смысла в реализации данного вопроса.
Книги активно заполняются/исправляются каждый день разными пользователями. Стараюсь сделать работу более комфортной  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Они по факту идентичные (книги), но из-за того, что на офисе 13 не возможно реализовать общее редактирование, разнес на каждого пользователя по книге
Изменено: Александр - 05.09.2018 15:26:31
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Цитата
Александр написал:
Я эту кнопку "впаяю"
А ссылку на код переноса тоже впаяете?
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, Вы серьезно? я не селен в ВБФ, но у меня уже работает на этом принципе
Этот код отрабатывается на каждом листе по отдельности. Код сохранен в "Этокнига"
Код
Option Explicit
Sub GetFromAct()
Dim arrFull(), Temp, X
Dim t@, nr&, nc%, r&, c%, i&, n&
Dim whatFind$, delimList$
Application.ScreenUpdating = 0: On Error GoTo er: delimList = ";": t = Timer
 
arrFull = [??].Value
nr = [??].Rows.Count: nc = [??].Columns.Count
whatFind = ActiveSheet.Range("E10").Value
 
ReDim arrFind(0 To nr * (nc - 1)): i = -1
    For n = 1 To nr
        Temp = Replace$(arrFull(n, 4), delimList, Chr(32))
        Temp = Application.WorksheetFunction.Trim(Temp)
        Temp = "%%%" & Replace$(Temp, Chr(32), "%%%") & "%%%"
            If InStr(Temp, "%%%" & whatFind & "%%%") > 0 Then
                For c = 2 To nc
                    i = i + 1
                    arrFind(i) = arrFull(n, c)
                Next c
            End If
    Next n
If i < 0 Then MsgBox "?????? ?? ???????", vbInformation, "?????? ????????": GoTo fin
ReDim Preserve arrFind(0 To i)
nc = nc - 1: nr = (i + 1) / nc
ReDim arrInput(1 To nr, 1 To nc): n = 0: i = 0
    For r = 1 To nr
        For c = 1 To nc
            arrInput(r, c) = arrFind(i)
            i = i + 1
        Next c
    Next r
ActiveSheet.Range("T8").Resize(nr, nc).Value = arrInput
t = Round((Timer - t) * 1000, 4)
MsgBox "?????? ?????????!" & vbLf & vbLf & "????? ??????: " & t, vbInformation, "??????"
GoTo fin
er: MsgBox "?????????????? ??????!", vbCritical, "?????? ?????????"
ex: MsgBox "??????", vbInformation, "?????"
fin: On Error GoTo 0: Application.ScreenUpdating = 1
End Sub

Изменено: Александр - 05.09.2018 15:50:15
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Цитата
Александр написал:
но у меня уже работает на этом принципе
На каком принципе, у вас каждый раз генерируется кнопка на листе с уже действующей ссылкой на ранее созданный код?
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
у вас каждый раз генерируется кнопка на листе
так да. У меня шаблон в котором "эта кнопка" - которая занимается поиском значений и выводом на этот лист(активный)
потом макроредактором сделал простую кнопку "скопировать" шаблон где происходит раб процессы и кнопка работает
Цитата
Nordheim написал:
ссылкой на ранее созданный код
именно
Код
whatFind = ActiveSheet.Range("E10").Value
Изменено: Александр - 05.09.2018 16:01:02
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Когда у Вас будет создана кнопка, код  с переносом листа для нее вы сами пропишите или тоже макросом?
"Все гениальное просто, а все простое гениально!!!"
 
Не совсем понимаю Вашего вопроса.
Код
  Sheets("Шаблон (60)").Select - тут, как я понимаю, должен появится оператор активный лист
    Sheets("Шаблон (60)").Copy Before:=Workbooks( _
        "Некая книга.xlsm").Sheets(1)тут выбор куда скопировать
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Вы перенесли лист в "некую книгу" вместе с кнопкой. В книге источнике откуда появится лист с еще одной кнопкой? Ведь Вы просите кнопку на листе, а лист перенесли в "некую книгу" вместе с кнопкой. Далее Вы в книге Источнике формируете лист с кнопкой , но кнопка не ссылается ни на какой код. И что дальше вы намерены делать?
"Все гениальное просто, а все простое гениально!!!"
 
О кнопке не понял... Код для копирования активного листа в другую книгу
Код
    sPath = "тут полный путь к книге с именем и расширением"
    Set sht = ActiveSheet ' объект в переменную

    With Application: .ScreenUpdating = False: .DisplayAlerts = False: End With
    Set wBook = Workbooks.Open(Filename:=sPath) 
        
    With wBook
        sht.Copy Before:=.Sheets(1) 
    
        With .Sheets(1) 
            ' если нужно, меняем имя, работаем  листом...
        End With
        
        .Save: .Close
    End With

    With Application: .ScreenUpdating = True: .DisplayAlerts = True: End With
 
Nordheim, А Вы про это. Еще раз
Шаг 1 - создается Лист "Шаблон" в который я "впаяю" данный макрос с кнопкой
Шаг 2 - Создается кнопка "Копировать Шаблон" теперь это Лист "Шаблон (1)" и т.д.
Шаг 3 - нажимаю эту кнопку на Листе "Шаблон N" и переношу его в др книгу
т.е. на каждом листе у меня будет уже кнопка
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Цитата
Александр написал:
нажимаю эту кнопку
А вы уверены, что что-то произойдет?
"Все гениальное просто, а все простое гениально!!!"
 
Nordheim, Хватит)))  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Ну смотрите я предупредил, ваша вновь созданная кнопка будет просто муляжом. Жаль что Вы так и не поняли суть темы обсуждения.
Удачи.
Изменено: Nordheim - 05.09.2018 16:37:48
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
Жаль что Вы так и не поняли суть темы обсуждения.
К сожалею, да.  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
А Вы попробуйте сделать кнопку, и понажимать , что будет происходить?
"Все гениальное просто, а все простое гениально!!!"
 
Александр, Может это поможет?
Код
ActiveSheet.Shapes("Button 1").OnAction = "Module1.Macro1"

 
Код в сообщеии №18 - для марсиан? От автора темы - ни пол-слова...
Цитата
Так скажите, ради осьминога, для чего учиться [помогать]?
 
vikttur, Оо, честное слово не увидел Вашего кода (сообщения).
Искренни извиняюсь за ложное представление о моем наплевательском отношение.
Сегодня/завтра протестирую - отпишусь
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
Александр, а моё сообщение видели? )
 
Юрий М, Видел, все проверю:)  
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
 
vikttur, Что то не так. Как я понял - не работает :)
Юрий М, Вашу в 2 строку вставлял, не помогает

Указывал путь и в кавычках и без
Я не понимаю в коде, в этом и сложность
В жизни нет ничего невозможного! Есть только недостаток знаний и умений.
Страницы: 1 2 След.
Наверх