Страницы: 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.03.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.03.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
Наверх