Страницы: 1
RSS
Импорт листа из другой книги экселя, Импорт листа из другой книги экселя
 
Здравствуйте!
Эксель 2007.
Подскажите, пожалуйста, код макроса, который бы импортировал лист "Лист1" из книги с названием "Замены", расположенной на рабочем столе (C:Users\OLEGAS\Desktop\Замены.xlsx) в открытую книгу на лист "Замены".
Спасибо!
 
Здравствуйте.
Код
Workbooks.Open("C:\Users\OLEGAS\Desktop\Замены.xlsx").Sheets("Лист1").Copy After:=ThisWorkbook.Sheets(1)
ThisWorkbook.Sheets(2).Name = "Замены"
Workbooks("Замены.xlsx").Close False
 
Цитата
Olegas написал: Подскажите, пожалуйста, код макроса
В Excel есть инструмент Макрорекордер. Включите его, выполните нужные действия, остановите макрорекордер. Будет Вам код
Согласие есть продукт при полном непротивлении сторон
 
Файл "Замены" открывается, но дальше код не работает. Почему-то выделяет желтым первую строчку...не могу понять, перепробовал многое, не помогло.

Запись через макрорекордер создает много лишних кодов. Хотелось бы, как в предложенном варианте, тремя строчками обойтись.
 
Цитата
Olegas написал: Хотелось бы, как в предложенном варианте, тремя строчками обойтись.
Я так понимаю сами ничего в этом направлении делать не собираетесь (судя по скорости создания тем по всякой мелочи и принципиальному отказу пользоваться поиском)? В таком случае - какая разница сколько строчек в коде?
Это форум для ПОМОЩИ тому, кто сам что-то делает (хотя бы пользуется поиском), а не авторешалка бесконечных хотелок.
Если все таки сами планирует в чем-то разобраться, то код от макрорекордера самое то, для начала изучения
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Olegas написал:
но дальше код не работает
Код работает.
Вы удалили перед запуском макроса лист "Замены" из открытой книги, если он там был?

Попробуйте, как порекомендовал модератор, записать макрос и затем лишнее подчистить. Так сможете быстрее разобраться.
Ведь вам же не просто нужны строчки кода, вы собираетесь с ним что-то дальше делать, верно?
Изменено: asesja - 11.01.2026 17:55:48
 
Цитата
написал:
Вы удалили перед запуском макроса лист "Замены" из открытой книги, если он там был?
И удалял - ничего не работает, и добавлял, всё равно не работает.

Написал еще вот такой код:
Код
Sub Макрос3()
'
' Макрос3 Макрос
'
    Dim SourceWB As Workbook, DestWB As Workbook
    Dim SourceSheet As Worksheet, DestSheet As Worksheet
    Dim SourceFileName As String, DestFileName As String
    SourceFileName = "C:\Users\OLEGAS\Desktop\Замены.xlsx"
    Const SourceSheetName As String = "Лист1"
    Const DestSheetName As String = "Замены"
    Set SourceWB = Workbooks.Open(SourceFileName)
    Set SourceSheet = SourceWB.Sheets(SourceSheetName)
    Set DestSheet = ThisWorkbook.Sheets(DestSheetName)
    SourceSheet.Cells.Copy
    DestSheet.Range("A1").PasteSpecial Paste:=xlPasteAll
    Application.CutCopyMode = False
    SourceWB.Close SaveChanges:=False
    Set SourceSheet = Nothing
    Set DestSheet = Nothing
    Set SourceWB = Nothing
    Set DestWB = Nothing
End Sub

Книга открывается, закрывается, но ничего не вставляется на лист "Замены" почему-то.
 
Еще третий метод пробовал: включил запись макроса, открыл книгу "Замены", скопировал все ячейки, перешел в книгу назначения, перешел на лист "Замены", вставил ячейки, закрыл книгу "Замены", остановил макрос.

Попробовал прогнать макрос...аналогично
 
Запустил код из сообщения #7 (заменив Путь и Названия листов на свои), все прекрасно сработало
Цитата
Olegas написал: но ничего не вставляется на лист "Замены" почему-то
Может просто на исходном листе и нет ничего?
Согласие есть продукт при полном непротивлении сторон
 
Прикрепляю 2 тестовых файла. При открытом файле "1121" запускаю вышеуказанный длинный скрипт. Во время проведения скрипта, открывается файл "Замены", копируется в буфер лист и закрывается, не вставляя, при этом, ничего в файл "1121" на лист "Замены".
Проблема в коде вставки.
Заранее благодарен и очень признателен за помощь!
Изменено: Olegas - 13.01.2026 23:05:27
 
На Ваших файлах код из сообщения #7 отработал без проблем
Цитата
Olegas написал: копируется в буфер лист
Может Вам нужно не диапазон копировать, а лист целиком?
Сейчас макрос копирует не лист а весь диапазон листа, хотя тоже без проблем
Согласие есть продукт при полном непротивлении сторон
Страницы: 1
Читают тему
Наверх