Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Скопировать лист из другой книги
 
Добрый день!!!
Подскажите пожалуйста макрос, который позволит скопировать "определенный лист" из другой книги. Имя "определенного листа" задается в ячейке А1 активной книги в Лист1. "Другая книга" постоянно меняется. Понимаю, что необходимо создать кнопку и к ней привязать макрос. Спасибо.
Uliandr
 
Цитата
Uliandr написал:
"Другая книга" постоянно меняется
На что? И как к ней обратиться, если она не активна, судя по этому:
Цитата
Uliandr написал:
Имя "определенного листа" задается в ячейке А1 активной книги
Получить имя листа на основании указанных условий можно так:
Код
dim sh_name as string
'получаем имя листа из ячейки
sh_name = ActiveWorkbook.Sheets("Лист1").Range("A1").Value

а так его скопировать из книги с кодом в активную книгу:
Код
ThisWorkbook.Sheets(sh_name).Copy before:=ActiveWorkbook.Sheets(1)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Uliandr, здравствуйте!
Тестируйте…
я использовал другой подход, нежели Дмитрий. Я копирую содержимое и вставляю на заранее созданный лист. Это медленнее, так что модифицируйте ;)
Изменено: Jack Famous - 28 Мар 2018 13:08:50
«Тот, кто несет фонарь, спотыкается чаще, чем тот, кто идет следом.»
Иоганн Пауль Фридрих Рихтер
 
Как вариант.
Код
Sub iCopySheet()
    Dim iPath$, Sht As Worksheet
    Dim book As Workbook, sh_name$
    Set book = ThisWorkbook
    sh_name = book.Worksheets(1).[a1].Value
    iPath = Application.GetOpenFilename("(*.xls*),*.xls*", , "Выбрать файл")
    On Error Resume Next
    With GetObject(iPath)
        .Worksheets(sh_name).Copy after:=book.Sheets(book.Sheets.Count)
        .Close False
    End With
    If Err.Number <> 0 Then MsgBox "Указанный лист в книге отсутствует!", vbInformation
End Sub
"Все гениальное просто, а все простое гениально!!!"
 
Все супер! Большое спасибо. Работает как надо.
Uliandr
 
Возникла проблема. При копировании листа не переносятся значения ячеек, где имеются формулы с ссылками на другие листы. Как сделать, что-бы переносились только значения ячеек копируемого листа?
Изменено: Uliandr - 28 Мар 2018 15:40:02
Uliandr
 
А так?
Код
Sub iCopySheet()
    Dim iPath$, Sht As Worksheet
    Dim book As Workbook, sh_name$
    Set book = ThisWorkbook
    sh_name = book.Worksheets(1).[a1].Value
    iPath = Application.GetOpenFilename("(*.xls*),*.xls*", , "Выбрать файл")
    On Error Resume Next
    With GetObject(iPath)
        With .Worksheets(sh_name)
            .UsedRange.Value = .UsedRange.Value
            .Copy after:=book.Sheets(book.Sheets.Count)
        End With
        .Close False
    End With
    If Err.Number <> 0 Then MsgBox "Указанный лист в книге отсутствует!", vbInformation
End Sub
"Все гениальное просто, а все простое гениально!!!"
 
Да так все просто отлично. Большое спасибо.
Uliandr
Страницы: 1
Читают тему (гостей: 1)