Excel макросы для копирования всей книги

Задача состоит в том, чтобы скопировать определенный диапазон текущего листа, открыть другую книгу, и вставить эти скопированные данные в определенную ячейку, сохранить этот файл и закрыть. Ниже приведен код VBA.

Sub Название_Макроса()

'Выделить диапазон который необходимо скопировать
Range("A1:F52").Select
'Скопировать то, что выделено
Selection.Copy
ChDir "путь к папке где лежит файл в который необходимо скопировать"
Workbooks.Open Filename:= "Название файла, который находится в папке, путь к которой указан выше"
'Выделить начальную ячейку в которую необходимо вставить скопированные данные
Range("A6").Select
'Вставить данные
ActiveSheet.Paste
'сохранить текущую книгу
ActiveWorkbook.Save
'Закрыть книгу
ActiveWorkbook.Close
End Sub

Вариант 2: В открывшейся книге запускаем макрос, чтобы он открыл нужную нам книгу, скопировал от туда нужные нам данные и вставил в нашу открытую книгу, закрыв файл из которого эти данные были скопированы

Sub Название_Макроса2()
'Открываем файл с которого нужно скопировать данные
Workbooks.Open Filename:="C:Данные.xlsx"

'Скопировать нужный диапазон в открывшейся книге на листе 1
Workbooks("Данные.xlsx").Worksheets("Лист1").Range("A16:E16").Copy
'Активируем нужную нам книгу
Workbooks("Книга1.xlsm").Activate

'Выделяем и вставляем скопированные данные в ячейку А1
ActiveWorkbook.Worksheets("Лист1").Range("A1").Select
ActiveSheet.Paste

'Закрываем книгу откуда мы скопировали данные
Workbooks("Данные.xlsx").Close

End Sub

Еще пример — Скопировать диапазоны данных из активной открытой книги Excel нескольких листов (в нашем примере 3-х листов) в другую книгу, которая хранится в определенном месте. Данные будут вставлены как значения, плюс будут перенесены форматы ячеек.

Sub Копируем_листы_в_другую_книгу()
Dim bookconst As Workbook
Dim abook As Workbook
Set abook = ActiveWorkbook 'присваиваем перменную активной книге
Set bookconst = Workbooks.Open("C:UsersUserDesktop1.xlsx") 'присваиваем перменную книге куда необходимо копировать данные

'переходим в активную книгу откуда необходимо скопировать данные
abook.Worksheets("Лист1").Activate
Range("A1:I23").Copy 'копируем определенный диапазон листа, укажите свой диапазон
bookconst.Worksheets("Лист1").Activate 'активируем лист куда необходимо вставить данные
Range("A1:I23").Select 'встаем на ячейку А1
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'вставляем только форматы ячеек
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'второй лист
abook.Worksheets("Лист2").Activate
Range("A1:I23").Copy
bookconst.Worksheets("Лист2").Activate
Range("A1:I23").Select 'выделяем диапазон
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'вставляем только форматы ячеек
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'третий лист
abook.Worksheets("Лист3").Activate
Range("A1:I23").Copy
bookconst.Worksheets("Лист3").Activate
Range("A1:I23").Select 'выделяем диапазон
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'вставляем только форматы ячеек
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
'сохранить текущую книгу
bookconst.Save
'Закрыть книгу
bookconst.Close
abook.Activate

End Sub

Если статья была вам полезна, то буду благодарен, если вы поделитесь ей со своими друзьями с помощью кнопок расположенных ниже.

Спасибо за внимание.

 

Denoksa

Пользователь

Сообщений: 16
Регистрация: 07.09.2015

Добрый вечер. Прощу помощи. Возникла проблема пересмотрел ВСЕ. Суть вопроса нужен макрос для копирования данных из одной книги в другую, а именно:

  1. Имеется файл «Шаблон».xlm в котором данный макрос будет, если поможете;
  2. Запуск макроса, через кнопку «CommandButton.1»;
  3. После запуска макроса необходимо выбрать файл с данными.xls, там имеется один лист с названием Лист1, а также там
        имеются объединённые ячейки;
  4. Скопировать Столбцы А,В,С,D,E,F? т.е 6 шт. на Лист1;
  5. Вставить в книгу «Шаблон».xlm на лист «База», но вставка должна быть в формате Значения «123», но если так не
        получится то очистить данный лист (все удалить) перед вставкой;
  6. Если нужны файлы примера приложу;
  7. Заранее Спасибо.

Прикрепленные файлы

  • Шаблон.xlsm (14.13 КБ)
  • Данные.xls (29.5 КБ)

Изменено: Denoksa12.07.2022 22:49:22

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

1. да, приложите файлы
2. копируем столбцы из какой книги в какую? Из шаблона или в шаблон?

 

Denoksa

Пользователь

Сообщений: 16
Регистрация: 07.09.2015

Файлы добавил Копировать из файла Данные с Лист1, в файл Шаблон на лист «База»

И еще файл с Данными может иметь разные имена, т.е. Данные1, Итоги, Смежный и т.д.

Изменено: Denoksa12.07.2022 23:02:32

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

#4

12.07.2022 23:24:05

Цитата
Denoksa написал:
После запуска макроса необходимо выбрать файл с данными.xls, там имеется один лист с названием Лист1, а также там     имеются объединённые ячейки;

Ай-яй-яй, как не хорошо нам врать… А с виду такие честные глаза у вас…
Скачал ваш файл «Данные.xls», открыл надеясь увидеть там лишь один лист с названием «Лист1» и что я вижу? Да, что? Что я же я там вижу? А вижу я там два листа — Лист1 и Лист2, и как вы думаете где находятся данные? Не угадали, на Лист2… Вот как после этого верить людям? Сейчас мы напишем макрос, который берёт данные с Лист1, вы его запустите у себя и…? Правильно скажите — аааа, плохой макрос, ничего не копирует!!! А мы тут будем сидеть и гадать, почему же у вас он ничего не копирует… Что делаем? Переносим таблицу с Лист2 на Лист1 и удаляем Лист2 в файле Данные?

См. файл

Код
Sub LoadData()
    Dim wbData As Workbook, sPath As String

    If MsgBox("Загрузить данные на лист База?", vbQuestion + vbYesNo, "Загрузка данных") = vbNo Then Exit Sub
    
    'очищаем данные на листе База
    With Worksheets("База")
        .Cells.Clear
    End With
    
    'запрашиваем путь к файлу
    sPath = Application.GetOpenFilename("Файлы Excel (*.xls*),*.xls*", 1, "Выберите файл с данными", , False)
    If sPath = "False" Then Exit Sub
    
    'отключаем обновление экрана
    Application.ScreenUpdating = False
    
    'открываем файл с данными
    Set wbData = Workbooks.Open(sPath, UpdateLinks:=False, ReadOnly:=True)
    
    'копируем столбцы
    wbData.Worksheets("Лист1").Columns("A:F").Copy ThisWorkbook.Worksheets("База").Range("A1")
    
    'закрываем файл с данными
    wbData.Close SaveChanges:=False
    
    'включаем обновление экрана
    Application.ScreenUpdating = True
    
    MsgBox "Данные на лист База загружены!", vbInformation, "Загрузка данных"
End Sub

Прикрепленные файлы

  • Шаблон.xlsm (20.69 КБ)

Изменено: New12.07.2022 23:44:48

 

Denoksa

Пользователь

Сообщений: 16
Регистрация: 07.09.2015

Огромное спасибо, все получилось

 

юнат

Пользователь

Сообщений: 22
Регистрация: 18.10.2022

#6

02.01.2023 14:54:58

С Новым годом!
А у меня не получилось.
Не могу скопировать колонку из файла V3.xlsx в колонку текущего открытого файла.
Поправьте, пожалуйста.

Код
Public Sub Primer_1()

Dim objExcelApp
Dim objWorkSheet

Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = False
objExcelApp.Workbooks.Open ("C:UsersPDesktopV3.xlsx")
Set objWorkSheet = objExcelApp.ActiveWorkbook.Worksheets(1)
objExcelApp.Worksheets(1).Range("A4:A60").Copy
ThisWorkbook.Worksheets(1).Range("A4:A60").Paste
objExcelApp.Workbooks.Save ' objExcelApp.Workbooks.Saved = True
objExcelApp.Workbooks.Close
objExcelApp.Quit

End Sub
 

у меня не получилось понять  задачу, а все остальное получилось

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Григорий Калюга

Пользователь

Сообщений: 153
Регистрация: 01.01.1970

#8

02.01.2023 22:11:24

Цитата
юнат написал:
Поправьте, пожалуйста.

Добрый день!
Мне кажется или это так: Вы открыли файл:

Код
objExcelApp.Workbooks.Open ("C:UsersPDesktopV3.xlsx")

и эта книга стала Thisworkbook. Теперь Вы из ее листа берете данные — копируете … А где переход в текущий файл? Вероятно до открытия файла V3, Вам следовало бы в объектную переменную: dim aktivBook as Workbook: Set aktivBook = thisworkbook и после того как вы сделали .Copy, то .Paste уже в aktivBook и дальще aktivBook.Activate
Как то так. Пишу без проверки. Но идея такова.

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#9

02.01.2023 22:20:11

Цитата
Denoksa написал:
Возникла проблема пересмотрел ВСЕ.

лукавите — пересмотреть ВСЕ в инете НЕ ВОЗМЛОЖНО!!!
пока вы пересматривали ВСЕ появилась куча нового…. и вот уже не все(((
вы заметили я использовал слово «лукавите» вместо «пиз…те»)

Изменено: Ігор Гончаренко02.01.2023 22:21:59

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

MikeVol

Пользователь

Сообщений: 229
Регистрация: 20.10.2020

Ученик

#10

03.01.2023 11:51:40

Ігор Гончаренко, кажись вас

батенька

слегка занесло. Вы написали первому ТС-у

Цитата
Ігор Гончаренко написал:
вы заметили я использовал слово «лукавите» вместо «пиз…те»)

который уже получил ответ на свой вопрос и остался довольным. А тут нарисовался другой ТС

Цитата
юнат написал:
А у меня не получилось.

Не в упрёк было сказано и уж тем более не хотел вас обидеть.
С Новым Годом! Мира и Здоровья!

Изменено: MikeVol03.01.2023 11:56:54

 

юнат

Пользователь

Сообщений: 22
Регистрация: 18.10.2022

#11

03.01.2023 12:38:42

Григорий Калюга, переход для вставки в текущую открытую книгу не могу понять как выполнить,
сделал по Вашему совету ещё одну переменную:

Код
Public Sub Primer_1()

Dim objExcelApp
Dim objWorkSheet
Dim aktivbook As Workbook

Set aktivbook = ThisWorkbook
Set objExcelApp = CreateObject("Excel.Application")
objExcelApp.Visible = False
objExcelApp.Workbooks.Open ("C:UsersParkingDesktopV30.xlsx")
Set objWorkSheet = objExcelApp.ActiveWorkbook.Worksheets(1)
objExcelApp.Worksheets(1).Range("A4:A60").Copy
aktivbook.Worksheets(1).Range("A4:A60").Paste
aktivbook.Activate
objExcelApp.Workbooks.Close
objExcelApp.Quit

End Sub

но отладчику так же не нравится строка с Paste

Прикрепленные файлы

  • Paste err.jpg (111.78 КБ)

 

New

Пользователь

Сообщений: 4581
Регистрация: 06.01.2013

При Paste указывают только первую верхнюю левую ячейку,а не диапазон

 

MikeVol

Пользователь

Сообщений: 229
Регистрация: 20.10.2020

Ученик

юнат, New говорит вам о 22-й строке

4-го поста данной темы.

Думаю так яснее станет вам.

 

юнат

Пользователь

Сообщений: 22
Регистрация: 18.10.2022

New, MikeVol, пробовал, так же строчку с Paste подсвечивает

 

Hugo

Пользователь

Сообщений: 23249
Регистрация: 22.12.2012

#15

03.01.2023 20:51:10

юнат, между приложениями ранее копировать диапазоны было нельзя. Может теперь что изменилось, не знаю, не проверял.

Возможности макросов в Excel практически неограниченные. В данном примере покажем в пару кликов можно создать любое количество копий листов используя VBA-макрос.

Как макросом скопировать листы в Excel

Допустим необходимо приготовить планы работ для сотрудников вашего отдела. Иметься шаблон таблицы для заполнения документа плана в виде одного рабочего листа Excel:

Шаблон плана.

Но вам необходимо создать 12 планов и соответственно 12 листов. В программе Excel нет встроенного инструмента для многократного создания копий рабочих листов за одну операцию. А копировать и вставлять 12 (а в практике встречаются случаи что и 120) листов вручную, да еще их все нужно переименовать – это потребует много рабочего времени и пользовательских сил. Определенно лучше в таком случае воспользоваться собственным макросом. А чтобы его написать воспользуйтесь VBA-кодом, который будет представлен ниже в данной статье.

Сначала откройте редактор макросов Visual Basic:

Visual Basic.

Создайте в нем стандартный модуль с помощью опций меню: «Insert»-«Module» и введите в него этот код, который ниже представленный на листинге:

Sub CopyList()
  Dim kolvo As Variant
  Dim i As Long
  Dim list As Worksheet
kolvo = InputBox("Укажите необходимое количество копий для данного листа")
If kolvo = "" Then Exit Sub
If IsNumeric(kolvo) Then
kolvo = Fix(kolvo)
Set list = ActiveSheet
For i = 1 To kolvo
list.Copy after:=ActiveSheet
ActiveSheet.Name = list.Name & i
Next
Else
MsgBox "Неправильно указано количество"
End If
End Sub

код копирования.

Теперь если нам нужно скопировать 12 (или любое другое количество) раз листов содержащие шаблон для заполнения плана работы сотрудника, кликните по исходному листу, чтобы сделать его активным и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«CopyList»-«Выполнить». Сразу после запуска макроса появиться диалоговое окно, в котором следует указать количество копий листа:

окно количество.

Введите, например, число 12 и нажмите ОК:

Листы скопированы 12 раз.

Лист с шаблоном плана скопируется 12 раз, а все названия листов будут иметь такое же как название исходного листа только со своим порядковым номером от 1 до12.

Внимание! Если название исходного листа слишком длинное, тогда может возникнуть ошибка в процессе выполнения макроса. Ведь в Excel название листа не может содержать более чем 31 символ. То есть ориентируйтесь так чтобы название исходного листа было меньше чем 27 символов. Так же ошибка может возникнуть если текущая рабочая книга Excel уже содержит листы с таким названием как у копий. Ведь в Excel все листы должны иметь уникальные названия.

Примечание. В новых версиях Excel (начиная от 2010 версии) одна рабочая книга может содержать максимальное количество листов, которое ограничивается лишь размером свободной оперативной памяти системы.



Описание кода макроса для копирования листов Excel

В коде используются 3 переменные:

  1. kolvo – в этой переменной определено какое количество копий будет создано при копировании текущего рабочего листа Excel.
  2. i – счетчик циклов.
  3. list – в этой переменной будет создан экземпляр объекта листа Excel.

В начале макроса вызываем диалоговое окно, в котором пользователь должен указать в поле ввода какое количество копий листов необходимо создать с помощью данного макроса «CopyList». Введенное числовое значение в поле ввода из этого диалогового окна передается в переменную kolvo. Если поле ввода пустое или в диалоговом окне была нажата кнопка отмены «Cancel», тогда дальнейшие инструкции не выполняться и работа макроса прерывается.

В следующей строке кода проверяется: является ли введенное значение в поле ввода – числовым? Если да, тогда на всякий случай удаляются все числа после запятой с помощью функции Fix.

Далее в переменой list создается экземпляр объекта ActiveSheet. После в цикле копируются листы. Количество циклов выполняется ровно столько, сколько пользователь указал в диалоговом окне макроса. В процессе копирования каждый раз изменяется название для новой копии листа. Так как в одной книге не может быть 2 и более листов с одинаковым названием. Уникальные названия для каждой копии создаются за счет присвоения к названию исходного листа число с порядковым номером текущего цикла. При необходимости пользователь может задать свои параметры для присвоения названия копиям листов изменив данную строку кода. Главное придерживаться правила уникальности названий листов.

Примечание. Если нет необходимости настраивать названия для новых листов, тогда данную строку кода можно закомментировать.

‘ActiveSheet.Name = list.Name & i

Читайте также: Макрос для переименования листов Excel при копировании.

В таком случае названия для копий Excel будет присваивать сам. Например, для исходного листа с названием «Лист1» копии будут получать названия: «Лист1 (2)», «Лист1 (3)», «Лист1 (4)» и т.д.

В конце кода выводиться сообщение на тот случай если пользователь неправильно указал числовое значение в поле ввода диалогового окна макроса.

Как перемещать и копировать листы или их данные в Excel

​Смотрите также​​, Интересно, я вот​Set curfold =​StoTisteg​ так не получилось.​ String = «СМЕТА»​ для разных доработок.​Помогите написать макрос.​ ObrazWsh .Range(«H17:J30»).Copy ThisWorkbook.Worksheets(«Лист2»).Range(«H17»).PasteSpecial​ только значениями.​текст;​ Excel, можно кликнув​ книгу, эта книга​ существующих листов.​ рабочей книги в​ дублировать (или копировать)​Внимание:​Примечание:​ столкнулся с такой​ FSO.GetFolder(FolderPath)​: На какую строку​

​StoTisteg​Dim str1 As​Т.е. я вызываю​Задача следующая:​ xlPasteValues .Range(«M5:O18»).Copy ThisWorkbook.Worksheets(«Лист2»).Range(«M5»).PasteSpecial​

​Например..с книги образец​число;​

​ по последней закладке​​ также копируются все​​Таким образом очень удобно​ другую существующую или​ листы в пределах​ При перемещении листа в​ Мы стараемся как можно​ вот проблемой, вызываю​If Not curfold​ ругается-то?​: Лист копировать проще:​ String​​ макрос с книги1​​- имеется 2​​ xlPasteValues End With​​ «Лист1»-например, B1:C46;I50:M150 и​

Перемещение листа в книге

  • ​дату и время;​ листов, как показано​ стили, которые используются​

    ​ изменять порядок листов​​ вновь созданную книгу​ текущей книги. Просто​ другую книгу проверьте​ оперативнее обеспечивать вас​ метод Copy, он​ Is Nothing Then​ASM_0408​Err.Clear​str1 = ThisWorkbook.Path​ и смета копируется​ файла в папке​ ObrazWb.Close SaveChanges:=False Application.DisplayAlerts​ так далее​формулы;​ на рисунке:​ на этом листе.​

Копирование листа в одной книге

  • ​ и структуру рабочих​ Excel. Кликните правой​ щелкните правой кнопкой​

​ все формулы и​

  1. ​ актуальными справочными материалами​ пишет что не​For Each fil​​:​

  2. ​On Error Resume​​ & Application.PathSeparator​​ туда же где​

  3. ​- открываем 2​​ = True Application.ScreenUpdating​​в книгу РАБОЧАЯ​логические выражения.​

  4. ​Книга может содержать от​​ Подробнее читайте переместить​​ книг. Это может​

​ кнопкой мыши по​ мыши имя ярлычка​ диаграммы, которые ссылаются​ на вашем языке.​ может получить свойство​ In curfold.Files​Range(Cells(1,1),Cells(1000,10).Copy Destination:=.Worksheets(ActiveSheet.Name).Cells(1,1)​ Next​Workbooks.Open Filename:=str1 &​ находится макрос.​ файла;​ = True MsgBox​ «Лист 1» в​Каждой ячейке можно задать​ 1-го до 255​

Перемещение листа

  • ​ или скопировать лист.​ пригодиться и в​ ярлычку листа, который​

Копирование листа

  1. ​ в нижней части​ на данные на​

  2. ​ Эта страница переведена​ класса Copy:​If fil.Name Like​вот на эту​

    ​Cells.Copy Destination:=Workbooks(«ИмяЦелевойКниги»).Worksheets(ActiveSheet.Name).Cells​​ strName​Такое вообще возможно?​- теперь нужно​

Перемещение листа в другую книгу

​ («Сработал макрос OPEN_ME»)​​ диапазоны​ формат и присвоить​ листов.​В предыдущих уроках мы​ том случае, если​ хотите скопировать, и​ листа и выберите​ листе, так как​ автоматически, поэтому ее​C# Microsoft.Office.Interop.Excel.Application ObjWorkExcelInput​ «*» & Mask​ASM_0408​Msgbox Prompt:=»В книге​With Workbooks(strName)​Udik​ с одного файла,​

  1. ​ End Sub​B1:C46;I50:M150 и так​

  2. ​ примечание. Все данные​​Как скопировать лист в​​ перемещали листы только​ Вам нужно отправить​ в контекстном меню​

    ​ команду​ перемещение листа могут​ текст может содержать​

  3. ​ = new Microsoft.Office.Interop.Excel.Application();​​ Then FileNamesColl.Add fil.Path​​: Пишет syntax error​​ ИмяЦелевойКниги нет листа​​.Sheets(strNameL).Copy Before:=ThisWorkbook.Sheets(1)​​: Э, так оно​​ где будет установлена​

  4. ​suvorovdim​​ далее​​ и стили форматирования​ Excel? Для быстрой​ внутри файла одной​

    ​ кому-то не целую​​ выберите​Дублировать​ появиться ошибки или​ неточности и грамматические​​ Microsoft.Office.Interop.Excel.Workbook ObjWorkBookInput =​​Next​

  5. ​StoTisteg​​ » & ActiveSheet.Name​​.Save​ же итак в​ кнопка макроса «копировать»,​: Спасибо, Уважаемый Kuzmich!​​Ещё раз простите​​ ячеек можно изменять.​

  6. ​ реализации данной задачи​​ книги. Перемещение и​​ рабочую книгу, а​

Копирование листа в другую книгу

  1. ​Переместить или скопировать​.​

  2. ​ неожиданные результаты в​​ ошибки. Для нас​​ ObjWorkExcelInput.Workbooks.Open(textBoxPromotionalSales.Text, Type.Missing, Type.Missing,​SearchDeep = SearchDeep​: Во-первых, я не​

    ​StoTisteg​.Close 0​

  3. ​ книге с макросом​​ скопировать лист на​​Простите за комментарий.​​ за неточность.​​ Так же стоит​​ необходимо:​​ копирование данных в​

  4. ​ один конкретный лист​​(Move or Copy).​​Примечание:​ данных. Аналогичным образом​ важно, чтобы эта​

    ​ Type.Missing, Type.Missing, Type.Missing,​​ — 1​ вижу, где Вы​: Или же​End With​​ есть, или вам​​ другой открытый файл​

  5. ​Выскакивает диалоговое окно​​Казанский​​ отметить, что форматирование​Навести курсор мышки на​ Excel это одна​ этой книги.​​В диалоговом окне​​ При дублировании листа, содержащего​

  6. ​ Если переместить лист,​​ статья была вам​​ Type.Missing, Type.Missing, Type.Missing,​

  7. ​If SearchDeep Then​​ открываете книгу sFiles.​​Dim Ws As​

Изменение цвета ярлычка листа

​End Sub​ нужна копия листа​ под названием «Общие​ с выбором файла,которое​

  1. ​: Эти «несколько определённых​ границ ячеек являются​

  2. ​ закладку листа (ярлычок),​​ из часто используемых​​Урок подготовлен для Вас​Переместить или скопировать​

​ диаграмму, рисунок или​ на который ссылается​ полезна. Просим вас​ Type.Missing, Type.Missing, Type.Missing,​For Each sfol​Затем — не​ Worksheet​den45444​ для дальнейших изменений?​​ файлы».​​ уже есть и​

​ диапазонов» Вы задаете​​ ключевой основой по​ который необходимо скопировать.​ процедур в рабочих​ командой сайта office-guru.ru​(Move or Copy)​ фигуру, может появиться​ трехмерные ссылки вычисления​

Дублирование листа вручную

​ уделить пару секунд​ Type.Missing, Type.Missing, Type.Missing);​ In curfold.SubFolders​ Workbooks(sFolder & sFiles),​Set Ws=ActiveSheet​: А если книга​SLAVICK​Кратко говоря, мне​ в моём коде.​

  1. ​ вручную или они​ оформлению внешнего вида​

    ​Сделать щелчок, левой кнопкой​ процессах.​Источник: http://www.howtogeek.com/220677/how-to-copy-or-move-a-worksheet-into-another-workbook-in-excel/​ в выпадающем списке​ сообщение об ошибке.​

  2. ​ может включать или​ и сообщить, помогла​ Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheetInput =​

  3. ​GetAllFileNamesUsingFSO sfol.Path, Mask,​ а Workbooks(sFiles).​With Workbooks(«ИмяЦелевойКниги»)​

    Кнопка

  4. ​ Сметный расчет меняет​: Так?​ нужно скопировать лист​В моём файле​ как-то вычисляются?​

    ​ таблиц (например, для​​ мишки, удерживая кнопку​На этом уроке будем​Перевел: Антон Андронов​В книгу​

Копирование листа в другую книгу

​ В этом случае​ оставлять данные на​ ли она вам,​ (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBookInput.Sheets[«Promotional-Sales»]; Microsoft.Office.Interop.Excel.Application ObjWorkExcelOutput​ FSO, FileNamesColl, SearchDeep​Открывать нужно сначала​Err.Clear​ свое название? Нельзя​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub Макрос1()​ с одной книги​ есть функция (GetFileName).​Диапазоны одинаковые на​ печати бланков и​

​ + клавишу CTRL​ перемещать и копировать​Автор: Антон Андронов​(To book) выберите​

  1. ​ лист можно продублировать​ листе.​

    ​ с помощью кнопок​ = new Microsoft.Office.Interop.Excel.Application();​Next​ конечную, потом начальную.​On Error Resume​

  2. ​ ли скопировать лист​Dim wb1 As​ на другую, но​

  3. ​ И макрос choise_dir​ всех листах или​ др.).​ переместить курсор в​​ листы в другие​​Примечание:​ рабочую книгу, в​ вручную.​

    Кнопка

  4. ​Откройте книгу, в которую​ внизу страницы. Для​ Microsoft.Office.Interop.Excel.Workbook ObjWorkBookOutput =​End If​Не вижу заголовка​ Next​

    ​ открытого файла?​​ Workbook, wb2 As​ только процесс должен​ файл образец.xls открывает.​ разные?​

support.office.com

Как в Excel скопировать или переместить лист в другую книгу

Копируем и перемещаем листы в Excel

​suvorovdim​ то место закладок​ файлы открытых книг.​Мы стараемся как​ которую нужно скопировать​Если ваш лист содержит​ требуется переместить лист.​ удобства также приводим​ ObjWorkExcelOutput.Workbooks.Open(@»C:UsersZLODesktopРаботаВыходной файл (тестовый)»,​Set fil =​ If’а.​

​.Worksheets.Add After:=.Worksheets(Sheets.Count)​т.е. я могу​ Workbook, Mwb As​ происходить в этой​Дальше в Вашем​Если вручную, да​: Здравствуйте,Уважаемые Специалисты!​ листов, куда следует​ При управлении данными​ можно оперативнее обеспечивать​ лист.​ элементы, из-за которых​​В меню​​ ссылку на оригинал​

Копируем и перемещаем листы в Excel

​ Type.Missing, Type.Missing, Type.Missing,​​ Nothing​​StoTisteg​If Err.Number=0 Then​​ изменить название сметного​​ Workbook, p$​ же папке.​ случае никаких копирований​ еще разные, я​

​Искал по форуму​​ вставить копию.​ документов очень часто​ вас актуальными справочными​Замечание:​ его невозможно продублировать,​Окно​ (на английском языке).​ Type.Missing, Type.Missing, Type.Missing,​Set curfold =​

Копируем и перемещаем листы в Excel

​: И? Какую строку​ Activesheet.Name=Ws.Name​ расчета и тогда​Set Mwb =​​Все это для​​ диапазонов не происходит..​ бы предложил присвоить​​ но не нашёл.​​Если листов очень много​ приходится переносить их​​ материалами на вашем​​Чтобы скопировать выбранный​ можно создать его​щелкните книгу, в​Листы можно перемещать или​​ Type.Missing, Type.Missing, Type.Missing,​​ Nothing​ красит?​Ws.Parent.Activate​ макрос не найдет​ ThisWorkbook​

​ того, чтобы я​​Kuzmich​ определенные имена копируемым​ Возможно,это частый вопрос.​ или необходимо скопировать​ из одной рабочей​ языке. Эта страница​​ лист в существующую​​ копию вручную, скопировав​

​ которую входит перемещаемый​​ копировать в пределах​​ Type.Missing, Type.Missing, Type.Missing,​End If​ASM_0408​Cells.Copy Destination:=.Worksheets(ActiveSheet.Name).Cells​ данный файл. Нельзя​p = Mwb.Path​ мог скопировать данные​: Закройте файл Образец,​

Копируем и перемещаем листы в Excel

​ диапазонам, чтобы в​Если есть аналог​ / переместить лист​ книги в другую.​ переведена автоматически, поэтому​ рабочую книгу, эта​ все данные и​ лист.​ одной книги, чтобы​ Type.Missing, Type.Missing); Microsoft.Office.Interop.Excel.Worksheet​End Function​: Желтым название макроса,​End With​​ ли указать какую-либо​​Set wb1 =​ файлы в другую​ а в файле​​ макросе ориентироваться по​​ — отправьте в​ в новую книгу​ Чтобы целостность данных​ ее текст может​​ книга должна быть​​ вставив их на​Щелкните лист, который требуется​ упорядочить содержащиеся в​ ObjWorkSheetOutput = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBookOutput.Sheets[«Promotional​Stepan Boiko​ синим всю эту​ASM_0408​ связь между ними?​ Workbooks.Open(p & «/»​​ папку и там​​ Рабочий запустите макрос​ именам. Например, пусть​​ топик нужный:)​​ тогда выполняем следующие​

Копируем и перемещаем листы в Excel

​ сохранялась лучше переносить​ содержать неточности и​ открыта. Если нужная​ новый лист. Вот​

Копируем и перемещаем листы в Excel

​ скопировать в другую​ ней данные.​ sales»]; try {​: Мне нужно скопировать​ строку​: А подскажите пожалуйста​den45444​ & «Книга2.xlsx»)​ же совершить такое​ open_me​ имя диапазона начинается​

​Подскажите,пожалуйста.​ действия:​
​ целый лист, а​
​ грамматические ошибки. Для​

​ книга не открыта,​

office-guru.ru

Копирование стилей ячеек из другой книги

​ как это сделать:​​ книгу.​Windows macOS Online​ ObjWorkSheetOutput.Cells.Clear(); ObjWorkBookOutput.Sheets[«Promotional sales»].Copy(Before:​ 1 лист из​Range(Cells(1,1),Cells(1000,10).Copy Destination:=.Worksheets(ActiveSheet.Name).Cells(1,1)​ как диапазоном копировать​: Хорошо. Допустим я​wb1.Sheets(«Смета»).Copy Before:=Mwb.Sheets(1)​ же действие без​в диалоговом окне​ с «copy»: copy1,​Есть книга *например​Правой кнопкой мышки кликаем​ не просто копировать​ нас важно, чтобы​ то её не​Выделите все данные на​В меню​ ​ ObjWorkBookInput.Sheets[«Promotional-Sales»]); ObjWorkBookOutput.Save(); }​ одной книги excel​

​RAN​ и вставлять при​ сохранил в xlms.​wb1.Close False​ указания полного пути​ выберите файл Образец​ copy_Заголовок и т.д.​ «образец.xls» с данными​

  1. ​ по закладке листа​ его содержимое. Так​ эта статья была​

  2. ​ будет в выпадающем​ листе.​

  3. ​Правка​​С помощью команды​​ catch (Exception ex)​​ в другую книгу​​:​​ условии что нужно​​Открываю его.​Кнопка ​End Sub​ к файлу.​gling​

    Нажмите кнопку Дополнительно, чтобы просмотреть окна

    ​Иначе при изменении​​ на разных листах​ (ярлычку) для вызова​​ быстрее, качественнее и​​ вам полезна. Просим​​ списке.​​Сочетание клавиш: нажмите клавиши​​выберите пункты​​Переместить или скопировать лист​

  4. ​ { MessageBox.Show(ex.Message); }​​ excel. Именно лист,​​,10))​

    Развернуть, чтобы отобразить другие стили

  5. ​ заменить во всех​​Как же теперь​​den45444​​Думаю файлы для​​: Посмотрите немного переделанный​ диапазонов придется править​»Лист1″,»Лист2″,Лист3″​ контекстного меню, где​​ менее затратно по​​ вас уделить пару​

    Выберите книгу в диалоговом окне Стили слияния

  6. ​Мы собираемся скопировать выбранный​ CTRL + ПРОБЕЛ​Лист​можно полностью переместить​ finally { ObjWorkBookInput.Close(false,​ а не диапазон​StoTisteg​

    • ​ книгах одной папки.​ с этого файла​:​​ примеров тут не​​ Ваш вариант.​

    • ​ код.А форматы переносить?​И аналогичная книга​​ выбираем опцию «Переместить​​ времени.​

      ​ секунд и сообщить,​​ лист в новую​ на клавиатуре, и​ >​ или скопировать листы​ Type.Missing, Type.Missing); ObjWorkBookOutput.Close(true,​

​ ячеек. Диапазон ячеек​​:​ Почему не лист​ скопировать в другую​Udik​ нужны.​suvorovdim​Наверно, пример все​ РАБОЧАЯ.xls с листами​ или скопировать…».​

support.office.com

Как переместить и скопировать лист Excel в другую книгу

​Чтобы скопировать лист в​ помогла ли она​ рабочую книгу, поэтому​ нажмите клавиши Shift​Переместить или скопировать лист​ в пределах одной​ Type.Missing, Type.Missing); ObjWorkExcelInput.Quit();​ я нашёл тут​ASM_0408​

​ на листах имеются​ книгу, но при​, сейчас пример нормально​SLAVICK​: Спасибо! Да,всё работает.​ же пригодился бы.​»Лист1″,»Лист2″,Лист3″​В появившимся окне настраиваем​ Excel в другую​ вам, с помощью​ в выпадающем списке​ + пробел.​.​ или нескольких книг.​ ObjWorkExcelOutput.Quit(); GC.Collect(); }​ Скопировать диапазон ячеек​, то ли это​

Перемещение и копирование листа Excel в другую книгу

​ расчеты отличные друг​ этом не указывать​ сформирую​: Посмотрите здесь вчера​ Виноват, сам не​suvorovdim​Нужно данные из​ параметры копирования листа.​ книгу, откройте как​

  1. ​ кнопок внизу страницы.​В книгу​Скопируйте все данные на​
  2. ​В меню​ Чтобы переместить или​Опция переместить или скопировать.
  3. ​ViterAlex​ одной книги Excel​ огрызок кода, то​ от друга а​ в макросе название​den45444​ была аналогичная тема.​ разобрался…​: Создайте на диске​ книги листов образец.xls​ Сверху выбираем, в​ минимум 2 файла.​ Для удобства также​(To book) выбираем​

Окно выбора книги.

​ листе, нажав клавиши​В книгу​ скопировать часть данных​:​

​ в другую книгу​

​ ли какое-то странное​ этот диапазон свободен​ этого файла, потому​:​Или давайте примеры​А где нужно​ С папку Отложено.​ (заполненные диапазоны) разнести​ какую из открытых​

exceltable.com

Создание, копирование и перемещение листов в книгах Excel

​ На одном из​ приводим ссылку на​ вариант​ CTRL + C.​выберите книгу, в​ на другие листы​Midian​

​ Excel а как​ неработоспособное в принципе​ во всех книгах.​ что название файла​Udik​

​den45444​ изменить,чтобы использовать функцию​Поместите туда файл​ на листы в​ книг следует скопировать​ них выберите лист,​ оригинал (на английском​Новая книга​Щелкните знак плюса (+),​ которую требуется переместить​ или в другие​, а зачем открывать​ лист копировать целиком​

Листы Excel как среда для работы с данными

​ нечто. Какой смысл​StoTisteg​ может изменится.​,​:​ в моём файле?​ образец.xls​ книгу РАБОЧАЯ.xls​ лист. Снизу указываем,​ который будем копировать​ языке) .​(New book). Ставим​ чтобы добавить пустой​ лист.​ книги, можно использовать​

Элементы листа Excel.

​ два экземпляра приложения,​ нету​ в цикле Do,​

​:​Udik​SLAVICK​SLAVICK​

  1. ​И где изменить,чтобы​Откройте файл рабочая.xls.​Если она НЕ​
  2. ​ между какими листами​ в другой файл.​При создании новых стилей​ галочку в строке​ лист.​Совет:​ команды​

​ если достаточно в​ViterAlex​ если внутри него​Range(Cells(1,1),Cells(1000,10)).Copy Destination:=.Worksheets(ActiveSheet.Name).Cells(1,1)​: а если название​, вот пример​

  1. ​, Вот примеры файлов.​ открывался нужный каталог​Активируйте кнопку OPEN.​ открыта,то её нужно​ следует вставить копию.​ Для этого:​Контекстное меню листов.
  2. ​ ячеек в книге,​Создать копию​Щелкните первую ячейку в​ Чтобы создать новую книгу​Вырезать​ одном открыть две​: А лист скопировать​ в принципе не​Окно переместить или скопировать лист.
  3. ​ASM_0408​ листа сменится? Как​den45444​Udik​ для выбора файла?​

​В книгу рабочая.xls​

Упражнения с элементами листов

​ открыть. Немножко запутался​Если мы копируем лист,​Щелчок правой кнопкой мышки​ вы можете сделать​(Create a copy).​

​ новом листе и​ и переместить в​и​ книги? В приведённом​ точно также. Обе​ меняется проверяемый в​:​ вариант можно завести​

​:​: Не понял для​Например,как у меня​ на Лист1 и​ в присвоении Wb​ а не переносим​

​ по ярлычку листа​ их доступными в​ Поскольку мы создаём​

Работа с ячейками листов

​ нажмите клавиши CTRL​ нее лист, выберите​Копировать​ мной примере именно​ книги должны быть​ заголовке параметр?​Sub Копирование_справочника()​ лист и прописывать​SLAVICK​ чего вторую книгу​ на диске С​ Лист2 должны скопироваться​ и Wb2 для​ его, следует отметить​ вызываем контекстное меню.​ других книгах. Стили​ новую книгу, то​ + V, чтобы​ вариант​

​.​ так и выполнено​ открыты:​ASM_0408​Dim sFolder As​ названия в нём,​, почти так, но​ вручную открывать​

​ папка «Отложено».​ данные(только значения!) из​ открытой и текущей​ галочкой опцию «Создать​Выбираем опцию «Переместить или​ ячеек можно скопировать​ в списке​ вставить данные.​новая книга​Щелкните ярлычок листа и​ копирование​C# Excel.Application xlApp=null;​

​: Я изначально приложил​ String, sFiles As​

  • ​ либо ещё каким​
  • ​ кнопка должна быть​
  • ​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​
  • ​Спасибо за ответы!​
  • ​ Листа1 и Листа2​

​ книги.​ копию».​ скопировать».​ из этой книги​Перед листом​Примечание:​.​ перетащите его в​Midian​ Excel.Workbook xlWbSource ,xlWbTarget;​ файл и написал​ String​ способом давать проге​

exceltable.com

копирование данных их одной книги в другую

​ в книге2.xlsx​​’ работает при​
​С уважением,​ книги образец.xls​По сути получается​
​​3 В появившимся диалоговом​ в другую книгу.​
​(Before sheet) не​
​ При вставке ячеек на​В поле​ нужное место.​
​:​
​ try { xlApp​ что он не​
​Dim Исходная As​
​ знать, какой файл​Эта кнопка должна​ закрытой целевой книге​Суворов​Диапазоны копирования и​
​ так:​Задание 1: Щелкните по​ окне из выпадающего​Откройте книгу, содержащую стили​ будет других листов.​ новый лист примененное​Перед листом​
​Внимание:​ViterAlex​
​ = new Excel.Application();​ работает так как​ Workbook​
​ надо открыть.​ вызывать макрос с​Sub Main()​Kuzmich​ вставки одинаковы.​
​1)Зашли в книгу​ каждому элементу, указанному​ списка выбираем файл​
​ ячеек, которые нужно​ Этот лист в​ к ним условное​
​выберите лист, перед​
​ При перемещении листа в​, Смысл был такой,​ xlWbSource = xlApp.Workbooks.Open(@»Путь​ я бы хотел.​
​Dim Конечная As​den45444​

​ книги1 и копировать​​Const strName As​: Если рабочий файл​После копирования файл​ Образец,зашли на «Лист1″​ на рисунке выше​ в который мы​ скопировать.​ новой рабочей книге​ форматирование будет потеряно.​ которым нужно вставить​ другую книгу проверьте​ что это два​ к книге, откуда​Цикл Do Loop​ Workbook’Ввод переменной MyWorkbook​:​ лист туда же​ String = «1.xlsx»​ будет в этой​ образец.xls нужно закрыть.​ скопировали диапазон​ и постарайтесь запомнить​ хотим скопировать лист.​Откройте книгу, в которую​ будет единственным.​В Excel Online, в​ перемещаемый лист, или​ все формулы и​ разных файла Excel​

​ копировать лист»); xlWbTarget​​ работает для перебора​ типа «книга»​
​Udik​ где находится макрос.​Const strNameL As​ папке, то диалог​
​Код можно вписать​открыли книгу(если она​ их расположение, название.​ После чего нам​ требуется скопировать стили.​
​Замечание:​ отличии от классического​ вариант​
​ диаграммы, которые ссылаются​ и копирование листа​ = xlApp.Workbooks.Add();//Новая книга​
​ файлов папке, если​Application.ScreenUpdating = False​
​, А нельзя так:​SLAVICK​

​ String = «смета»​​ его и откроет​ в имеющийся макрос​ открыта просто зашли)​Задание 2: Щелкните по​
​ доступен список его​На вкладке​Если Вы хотите​
​ приложения Excel, лист​переместить в конец​ на данные на​ идет из одного​ //Вставка первого листа​ есть другие варианты​Set Исходная =​Открыл файл с​: В формате​Dim str1 As​
​.InitialFileName = ThisWorkbook.Path​ open_me.​ РАБОЧАЯ.xls зашли на​
​ расположенных в низу​ листов. Теперь мы​

​Главная​​ переместить выбранный лист​ невозможно переместить или​
​.​ листе, так как​
​ файла в другой.​
​ из книги xlWbSource​
​ я приму и​ Workbooks.Open(«Z:Экономический отдел12.xlsm»)’Открываем исходную​ которого нужно скопировать​.xlsx​ String​suvorovdim​
​Небольшая корректировка. Название​ «Лист1» — вставили​
​ закладках (Лист2, Лист3​ имеем возможность указать,​
​в группе​ в другую рабочую​ скопировать, щелкнув его​
​Нажмите кнопку​ перемещение листа могут​ Решил проблему след.​
​ перед первым листом​ проработаю.​

​ книгу​​ и прописать макрос,​
​нельзя хранить макросы.​str1 = ThisWorkbook.Path​: Это я понял,​ файла в папке»Отложено»​ данные.​
​ и Лист1) поочередно.​
​ между какими листами​
​Стили​

​ книгу, то не​​ ярлычок правой кнопкой​ОК​ появиться ошибки или​ образом:​ книги xlWbTarget (xlWbSource.Worksheets[1]​А сейчас проработав​’диалог запроса выбора​ чтобы он копировал​Как вариант указать​ & Application.PathSeparator​ Kuzmich:) А как​ может быть любое.​2)Снова зашли в​ После щелчка ярлычок​ вставить нашу копию.​нажмите кнопку​ ставьте галочку в​ мыши. В Excel​.​ неожиданные результаты в​C# private void​ as Excel.Worksheet).Copy(Before: xlWbTarget.Worksheets[1]);​ код дошел до​ папки с файлами​ лист с той​ кнопке книгу 1…​Workbooks.Open Filename:=str1& strName​ указать конкретную папку?​Спасибо большое за​ книгу Образец,на «Лист2″​ каждого листа становится​ Отмечаем галочкой «Создать​Дополнительные​ строке​ Online для этого​Откройте книгу, в которую​ данных. Аналогичным образом​ LoadDataPromotionalSales() { Microsoft.Office.Interop.Excel.Application​ xlApp.Visible = true;​ выделения и копирования,​sFolder = «Z:Экономический​ книги где запускается​ но тогда она​With Workbooks(strName)​Kuzmich​ помощь!​ скопировали диапазон​ активным, а его​

​ копию» и нажимаем​​кнопки​:)
​Создать копию​
​ необходимо скопировать все​ требуется скопировать лист.​ Если переместить лист,​ ObjWorkExcelInput = new​
​ } catch (Exception)​ но вот вставка​ отделШаблоны расчетов НЕ​ макрос. А место​
​ «Запомнит» расположение файла,​ThisWorkbook.Sheets(strNameL).Copy Before:=.Sheets(1)​: А зачем тогда​

​suvorovdim​​зашли в книгу​ закладка подсвечивается.​ OK.​рядом с полем​
​(Create a copy).​ данные на листе​

​В меню​​ на который ссылается​ Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook ObjWorkBookInput​

​ { if (xlApp​​ и закрытие не​ ТРОГАТЬ!!!»​ куда копировать указать​
​ и будет всегда​.Save​ диалог выбора файла​
​: Здравствуйте, Уважаемые Специалисты!​ РАБОЧАЯ.xls на «Лист2″​Примечание: каждая книга может​
​Таким образом, нам удалось​ стили ячеек, содержащий​Нажмите​
​ и вставить их​
​Окно​
​ трехмерные ссылки вычисления​

​ = ObjWorkExcelInput.Workbooks.Open(textBoxPromotionalSales.Text, Type.Missing,​​ != null) xlApp.Quit();​ срабатывают подскажите пожалуйста​sFolder = sFolder​ например «главная». Получится​
​ пытаться его открыть…​

​.Close 0​​ Образец?​Поскольку топик уплыл​ — вставили данные.​

​ содержать в себе​​ вставить лист из​ эскизы стилей.​ОК​

​ на пустой лист​​щелкните книгу, в​ может включать или​ Type.Missing, Type.Missing, Type.Missing,​ }​ в чем ошибка.​
​ & IIf(Right(sFolder, 1)​
​ так?​ именно из этой​

​End With​​suvorovdim​ на вторую страничку​
​и так далее.​ множество листов (до​
​ другой книги Excel​Примечание:​. Будет создана новая​
​ в другой книге.​
​ которую входит копируемый​ оставлять данные на​
​ Type.Missing, Type.Missing, Type.Missing,​Водяной Змей​ Файл приложен.​​ = Application.PathSeparator, «»,​​Udik​ папки​End Sub​
​: В указанной папке​ форума позволил себе​Надеюсь,что объяснил. Если​
​ 255шт.), подобно как​
​ (из другого файла).​

​ При использовании Excel 2007​​ книга и лист​Чтобы переместить или скопировать​

​ лист.​​ листе.​ Type.Missing, Type.Missing, Type.Missing,​

​:​​StoTisteg​
​ Application.PathSeparator)​: Вы ж говорите,​Поэтому нужно указывать​Если лист с​:)​ может быть несколько​ напомнить о моём​

planetaexcel.ru

Копирование листа в другую книгу текущей папки (Макросы/Sub)

​ создавать пример -​​ скоросшиватель содержит в​
​​
​ нажмите на вкладке​
​ скопируется в неё.​ лист в другую​
​Выберите лист, который требуется​Удерживая нажатой клавишу CTRL,​
​ Type.Missing, Type.Missing, Type.Missing,​Не по теме:​: Он не будет​’отключаем обновление экрана,​ что макросы только​ ссылку на файл​ именем есть, к​ файлов. Они там​
​ вопросе выше.​ то их будет​ себе файлы.​Перемещение листа Excel в​Главная​ Если Вы решите​ книгу в Excel​
​ скопировать.​ перетащите ярлычок листа​ Type.Missing); Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheetInput​Вместо COM Excel лучше​ перебирать файлы в​ чтобы наши действия​ в одном разрешены.​ с макросом(третий файл​ нему цифра автоматом​
​ «откладываются» с других​Помогите, пожалуйста.​ два.​

​Различные операции с листами​​ другую книгу выполняется​в группе​
​ переместить лист, то​rules

​ Online, выполните следующее:​​В меню​​ на нужное место.​​ = (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBookInput.Sheets.get_Item(1); Microsoft.Office.Interop.Excel.Application​

​ использовать библиотеку NPOI.​​ папке. Перебор делаем​ не мелькали​ И проблема смены​
​ ), который всегда​
​ добавляется​ разОв:)​
​С уважением,​
​Спасибо большое за​ рассмотрим на следующих​
​ аналогичным способом. Просто​Стили​
​ в исходной книге​Выделите все данные на​
​Правка​ИЛИ​
​ ObjWorkExcelOutput = new​
​Она не требует​
​ так.​
​sFiles = Dir(sFolder​
​ имени файла остаётся.​
​ будет лежать в​
​SLAVICK​

​Уважаемый gling!​Суворов​ помощь.​ уроках.​

​ если не отметить​​нажмите кнопку​
​ его больше не​ листе.​
​выберите пункты​Щелкните ярлычок листа правой​ Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel.Workbook ObjWorkBookOutput​:D
​ Excel => меньше​Sub Перебор​
​ & "*.xls*")​
​ Хотя её легко​ одном месте(например личная​: Вот​Посмотрел Ваш вариант.​
​Kuzmich​Казанский​
​Самым главным элементом листа​
​ галочкой «Создать копию»,​Стили ячеек​ будет.​
​Сочетание клавиш: нажмите сочетание​Лист​ кнопкой мыши и​
​ = ObjWorkExcelOutput.Workbooks.Open(@"C:UsersZLODesktop!!!!!!!!!!!!!!!!!РаботаВыходной файл​
​ глюков и выше​Dim sfiles as​
​Do While sFiles​

​ обойти — сохраните​​ книга макросов), и​​Макрос в книге​​ Спасибо! Разбираюсь:)​​: Макрос в книге​​: Отсюда делаю вывод,​
​ является ячейка. Каждая​ то после нажатия​.​Вы также можете создать​
​ клавиш CTRL +​ >​
​ выберите команду​ (тестовый).xlsx», Type.Missing, Type.Missing,​ скорость открытия и​ collection​ <> «»​
​ целевой файл с​ менять макрос, чтобы​ «Главная»​suvorovdim​ Рабочая Sub open_me()​
​ что макрос находится​

​ ячейка имеет свой​​ кнопки OK, лист​Выберите команду​ копию листа в​ ПРОБЕЛ и нажмите​Переместить или скопировать лист​Переместить или скопировать.​

​ Type.Missing, Type.Missing, Type.Missing,​​ сохранения таблиц.​
​Dim fil as​
​Dim Ws As​ нужным именем, а​ смотрел путь не​Копирует лист "Смета"​
​: Уважаемый gling! Всё​ 'здесь код макроса​
​ в книге образец.xls.​
​ порядковый номер относительно​ не скопируется, а​Объединить стили​
​ той же рабочей​
​ клавишу Shift +​
​.​

​Установите флажок​​ Type.Missing, Type.Missing, Type.Missing,​​Stepan Boiko​​ Variant​ Worksheet​

​ после обработки сохраните​​ к своей папке,​​ из книги1 в​​ достигнуто,так и нужно!​​ Dim FD As​​ Sub Suvorovdim() Const​

​ строк и латинскую​​ переместиться.​​.​​ книге. Такая необходимость​ пробел.​В меню​
​Создать копию​ Type.Missing, Type.Missing, Type.Missing,​: Так-то да, но​Set sfiles=FilenamesCollection(«Z:Экономический отделШаблоны​Set Ws =​

​ под новым.​​ а к книге,​​ книгу2​​Спасибо Казанский и​
​ FileDialog Dim ObrazWb​ WB_RAB = «c:tempРАБОЧАЯ.xls»​ букву относительно колонок.​Лист Excel – это​В диалоговом окне​ может возникнуть, если​Скопируйте все данные на​В книгу​
​.​ Type.Missing, Type.Missing, Type.Missing);​ по ней нету​ расчетов НЕ ТРОГАТЬ!!!»,»*.xls*»,1)​ ActiveSheet​ASM_0408​ из которой его​Книги переименуйте как​ Kuzmich!​ As Workbook Dim​ ‘путь к книге​ Таким образом, каждой​ рабочая область под​Объединение стилей​ Вы хотите внести​ листе, нажав клавиши​:D
​выберите книгу, в​
​В разделе​ Microsoft.Office.Interop.Excel.Worksheet ObjWorkSheetOutput =​ уроков, а тех​For Each fil​With Workbooks(sFolder &​: Приветствую всех форумчан.​:D

​ вызвали… но помойму​​ Вам нужно​Я тоже в​

​ ObrazWsh As Worksheet​​ Dim wbRab As​ ячейке присвоен свой​

​ полосой инструментов. Лист​​в поле​ изменения в лист,​
​ CTRL + C.​ которую требуется скопировать​%)​перед листом​ (Microsoft.Office.Interop.Excel.Worksheet)ObjWorkBookOutput.Sheets.get_Item(8); var countCellInput​
​ примеров которые там​ In sfiles​ sFiles)​ Не могу сам​ это уже другой​
​200?'200px':''+(this.scrollHeight+5)+'px');">Sub Макрос1()​
​ копилочку Ваши советы​
​ Dim iFileName As​ Workbook, ws As​ адрес (подобно клеткам​
​ состоит из множества​Объединить стили из документа​
​ но при этом​Откройте книгу, в которую​
​ лист.​укажите, куда вы​
​ = ObjWorkSheetInput.Cells.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell); try​ даны недостаточно. Можете​
​'Здесь операции с​
​Err.Clear​
​ разобраться с причиной​
​ вопрос - другая​
​Dim wb1 As​
​ заберу:)​

​ String Set FD​​ Worksheet On Error​ в шахматной доске).​ ячеек упорядоченных между​выберите книгу, содержащую​ требуется сохранить первоначальный​
​ необходимо вставить данные,​Совет:​ хотите поместить копию.​ { Invoke((Action)delegate {​ тогда подсказать как​ файлом​On Error Resume​

​ того что творится​​ тема​ Workbook, wb2 As​
​Тема закрыта.​
​ = Application.FileDialog(msoFileDialogFilePicker) With​ Resume Next Set​ То есть, первая​ собой относительно строк​ стили, которые требуется​ вариант. Как было​ и щелкните знак​ Чтобы создать новую книгу​Нажмите кнопку​

​ foreach (var c​​ выполнить эту же​next fil​ Next​ в моем макросе.​Или вариант два:​ Workbook, Mwb As​Если позволите Уважаемый​ FD .Filters.Clear ‘удаляет​ wbRab = Workbooks(Mid$(WB_RAB,​

​ ячейка (в верхнем​​ и колонок.​​ скопировать, и нажмите​​ описано ранее в​
​ «плюс» (​ и переместить в​ОК​ in Controls) if​ операцию с помощью​End Sub​.Worksheets.Add After:=.Worksheets(Sheets.Count)​ Суть задачи вроде​Нужно открыть самостоятельно​ Workbook, p$​

​ gling…последний вопрос…​​ предопределенные фильтры .Filters.Add​ InStrRev(WB_RAB, Chr$(92)) +​ левом углу) имеет​Его внешний вид напоминает​ кнопку​ этой статье, откройте​+​ нее лист, выберите​.​ (c is Button)​ библиотеки NPOI?​

excelworld.ru

Копирование заданного листа в другую книгу (Макросы/Sub)

​Function FilenamesCollection(ByVal FolderPath​​If Err.Number =​ простая, скопировать лист​ два файла и​Set Mwb =​Если всё-таки нужно​ «Microsoft Excel files»,​ 1)) If Err​ адрес A1, а​ большую таблицу. В​ОК​ диалоговое окно​) в строке состояния,​ вариант​Если данные требуется переупорядочить,​ ((Button)c).Enabled = false;​Водяной Змей​ As String, Optional​ 0 Then ActiveSheet.Name​ полностью и вставить​
​ запустить макрос из​

​ ThisWorkbook​​ скопировать не только​ «*.xls» .Filters.Add «All​ Then Err.Clear Set​ под ней ячейка​ каждой новой книге​.​Переместить или скопировать​ чтобы добавить новый​

​новая книга​​ можно менять порядок​ progressBarLoadingExcelFile.Value = 0;​: Этих? Visual Basic​ ByVal Mask As​ = Ws.Name​ в другие книги​

​ Книга1.xlsm, который из​​p = Mwb.Path​

​ значения,но​
​ files", "*.*" .AllowMultiSelect​ wbRab = Workbooks.Open(WB_RAB)​
​ с адресом A2.​
​ Excel по умолчанию​Если в обеих книгах​(Move or Copy).​

​ пустой лист. ​​.​

​ листов в книге,​ progressBarLoadingExcelFile.Visible = true;​
​ .NET FAQ. Готовые​
​ String = "",​
​Ws.Parent.Activate​
​ одной папки закрытые​ открытой книги2.xlsx скопирует​
​Set wb1 =​
​значения и форматы​ = False .InitialFileName​
​ If Err Then​
​ С правой стороны​
​ 3 листа.​

​ есть стили с​​ По умолчанию в​Щелкните первую ячейку в​В поле​ а также копировать​ progressBarLoadingExcelFile.Maximum = (int)countCellInput.Row;​ решения, полезные коды​ Optional ByVal SearchDeep​Range(Cells(1,1),Cells(1000,10).Copy Destination:=.Worksheets(ActiveSheet.Name).Cells(1,1)​ с паролем информацию​ нужный лист.​ Workbooks.Open(p & «/»​(заливку,выделенный шрифт) ячеек,​

​ = ThisWorkbook.Path .Title​​ MsgBox «Не удалось​
​ в ячейке адрес​

​Для пользователя лист представляет​​ одинаковыми именами, с​​ выпадающем списке​
​ новом листе и​Перед листом​ и перемещать листы​
​ labelStatus.Text = "Подождите,​А что не​
​ As Long =​End With​ с листа "Цены"​
​den45444​
​ & "Книга1.xlsx")​ которые есть в​ = "Открытие документа​
​ открыть книгу" &​ B1 и т.д.​
​ собой файл с​ помощью указанных ниже​В книгу​
​ нажмите клавиши CTRL​выберите лист, перед​ в другие книги.​ идет загрузка данных​
​ нравится? Чтение есть,​ 999) As Collection​Workbooks.Application.DisplayAlerts = False​
​ диапазон A1:J1000 на​: Название книги будет​
​Set wb2 =​ файле образец.xls.​
​ Образец с данными​ vbLf & vbLf​
​Количество строк в каждом​ документом который вложен​
​ действий необходимо выбрать,​(To book) выбрана​
​ + V, чтобы​
​ которым нужно вставить​ Обратите внимание на​
​ Promotional Sales."; });​
​ сохранение есть, далее​Dim FSO As​Конечная.Save​
​ лист с аналогичным​
​ постоянно менятся​
​ Workbooks.Open(p & "/"​
​Как изменить строчку​
​ для копирования" .ButtonName​
​ & WB_RAB, vbCritical​
​ листе Excel 2010​
​ в скоросшиватель (рабочая​ требуется ли объединение​
​ текущая книга –​
​ вставить данные в​
​ скопированный лист, или​ то, что после​ ObjWorkSheetOutput.Cells.Clear(); for (int​
​ IntelliSense + руки​
​ Object​
​Исходная.Close​ названием. У меня​
​den45444​
​ & "Книга2.xlsx")​

​ в Вашем коде(выше)?​​ = «Открыть» If​ Exit Sub End​ чуть более одного​ книга Excel). Листами​ этих стилей.​

​ оставьте это без​​ этот лист.​ вариант​

​ перемещения листа в​​ i = 1;​​ в помощь и​
​Set FilenamesCollection =​

​Конечная.Close​​ вместо этого создаются​

​: Неужели нет больше​​wb1.Sheets(«Смета»).Copy Before:=wb2.Sheets(1)​ Wb2.Sheets(«Лист1»).Range(«A1:P100»).Value = Wb.Sheets(«Лист1»).Range(«A1:P100»).Value​ .Show = False​
​ If End If​ миллиона, а точнее​ можно и нужно​
​Чтобы заменить стили в​ изменения. В списке​
​Примечание:​переместить в конец​

​ вычислениях и на​​ i Дальше у​ все тут.​

​ New Collection​​’Закрываем книгу с​ новые файлы. Подскажите​ вариантов?​​wb1.Close False: wb2.Close​

​Спасибо за ответ.​​ Then MsgBox «Вы​​ For Each ws​

​ 1 048 578​​ управлять. Их можно​​ активной книге копируемыми​​Перед листом​ При вставке ячеек в​.​ диаграммах, в основе​ меня вызывается следующая​Да и по​Set FSO =​ сохранением изменений​ пожалуйста что я​Udik​

​ True​​Удачи всем!​ не указали нужный​ In ThisWorkbook.Worksheets ws.UsedRange.Copy​ шт. Количество колонок​ перемещать в другие​
​ стилями, нажмите кнопку​(Before sheet) выберите​ другую книгу примененное​Установите флажок​ которых лежат содержащиеся​ функция и в​
​ COM Excel уроков​ CreateObject(«Scripting.FileSystemObject»)​sFiles = Dir​ не так делаю.​: В файле без​End Sub​Юрий М​ файл!», 48, «Ошибка»​

​ wbRab.Sheets(ws.Name).Range(ws.UsedRange.Address) Next If​​ значительно меньше –​ рабочие книги. Данная​Да​ лист, перед которым​

​ к ним условное​
​Создать копию​ на нем данные,​
​ ее конструктор я​ не больно много.​
​GetAllFileNamesUsingFSO FolderPath, Mask,​Else​
​Благодарю!​ макросов видим:​
​den45444​: Тогда нужно не​
​ Exit Sub Else​
​ Err Then MsgBox​
​ 16 384шт.​ операция экономит много​.​ хотите вставить скопированный​ форматирование будет потеряно.​.​ могут использоваться неправильные​
​ передаю объект выходного​ Если бы когда​
​ FSO, FilenamesCollection, SearchDeep​MsgBox (sFiles +​
​StoTisteg​как то на​
​:​ присваивать, а копировать.​
​ iFileName = .SelectedItems(1)​ "При копировании возникли​
​Примечание: Обратите внимание! После​
​ времени чем просто​Чтобы сохранить стили активной​ лист. Мы решили​Иногда при работе с​Нажмите кнопку​ значения.​ отчета Excel и​
​ я начал его​Set FSO =​
​ " уже открыт!​: Так что Вы​
​ мой взгляд странно.​SLAVICK​
​gling​ End If End​
​ ошибки", vbExclamation End​ 26 латинских букв​
​ копировать и переносить​ книги, нажмите кнопку​ вставить копию нашего​
​ книгой Excel возникает​
​ОК​Перетащите ярлычок листа в​
​ т.д. Заметил еще​
​ изучать, я бы​ Nothing​
​ Пожалуйста закройте!")​ копируете-то? Лист полностью​
​Даже не знаю,​
​,​
​: Тогда так Wb2.Sheets("Лист1").Range("A1:P100").Copy​ With Set FD​
​ Sub​ название колонок состоит​
​ содержимое самого листа.​
​Нет​

excelworld.ru

Скопировать один лист из одной книги excel в другую книгу excel

​ листа в самый​​ необходимость скопировать или​.​ нужное место в​ один прикольный момент,​ увидел те исходники​End Function​End If​ или диапазон? И​ как такое запускать​Udik​ Wb.Sheets(«Лист1»).Range(«A1:P100»)​ = Nothing Application.DisplayAlerts​suvorovdim​ уже не из​

​В стандартной книге каждый​​.​ конец книги после​ переместить лист в​Изменение цвета ярлычков листов​
​ строке ярлычков.​ на ОС 8.1​ по NPOI, я​Function GetAllFileNamesUsingFSO(ByVal FolderPath​Loop​ запароленная папка —​а код копии​, благодарю вас.​suvorovdim​ = False Application.ScreenUpdating​: Спасибо Вам, Уважаемый​ одной, а из​ лист представляет собой​Примечание:​ всех существующих листов.​ другую книгу или​ может облегчить отслеживание​Нажмите и удерживайте клавишу​

​ не корректно срабатывает​​ бы точно начал​

​ As String, ByVal​

​’возвращаем ранее отключенное​ это фиговое решение.​
​ листа из Сметный​У меня книга1​: Спасибо, gling!​ = False Set​ Казанский!​

​ 2 и более​​ большие таблицы, которые​ Excel отображает это сообщение​ Отметьте галочкой параметр​ сделать копию листа​ информации в больших​ OPTION.​ Finaly, он не​ с NPOI.​ Mask As String,​

​ обновление экрана​​ Проще и надёжнее​ расчет.xlsx в ГЛАВНАЯ.xlsm,​ с поддержкой макросов​
​В моём случае​ ObrazWb = Workbooks.Open(Filename:=iFileName,​Простите,что некорректно поставил​ букв в логическом,​ заполняются данными и​ только один раз​
​Создать копию​ в этой же​ книгах.​Перетащите ярлычок листа в​ закрывает потоки открытых​А так…​ ByRef FSO, ByRef​Application.ScreenUpdating = True​ скрывать листы до​ для файла с​
​ (xlsm), а книга2​
​ лишь изменил порядок​ UpdateLinks:=False, ReadOnly:=True) Set​ условие…С каждого листа​ алфавитном порядке. Таким​

​ формулами. Как добавить​​ независимо от количества​​(Create a copy)​​ книге. Например, Вы​Удерживая клавишу CONTROL, щелкните​ строке ярлычков в​ файлов Excel, просто​Может напишу на​ FileNamesColl As Collection,​End Sub​
​ xlVeryHidden.​ макросом​ без макросов (xlsx)​ WB. Низкий поклон​ ObrazWsh = ObrazWb.Worksheets(«Лист1″)​ нужно взять несколько​ образом, адрес последней​ лист в Excel?​ пар стилей с​ и нажмите​ хотите что-то изменить,​ ярлычок листа.​ место, где нужно​ перестает к ним​ досуге статейку где-нибудь​ ByVal SearchDeep As​ASM_0408​ASM_0408​200?’200px’:»+(this.scrollHeight+5)+’px’);»>​Книга2 предназначена для​ Вам и Юрию!​ With ObrazWsh .Range(«C9:E22»).Copy​ определённых диапазонов​ ячейке в самом​ По мере необходимости​ одинаковыми именами.​ОК​ но при этом​

​Выберите команду​​ создать копию.​​ обращаться, но процессы​​ с примерами, включая​ Long)​: Посмотрите я правильно​: Пытался лист скопировать​Sub getList()​ отправки заказчикам.​Тема закрыта. Wb.Sheets(«Лист1»).Range(«A1:P100»).Copy​ ThisWorkbook.Worksheets(«Лист1»).Range(«C9»).PasteSpecial xlPasteValues .Range(«J16:L29»).Copy​

​и вставить их​​ нижнем правом углу​​ можно вставлять дополнительные​​Совет:​.​ сохранить первоначальные листы.​Цвет ярлычка​Важно:​ висят в диспетчере​ этот…​Dim curfold, fil,​
​ внес исправления листа​ но лучше думаю​Const strName As​Как только я​ Wb2.Sheets(«Лист1»).Range(«A1:P100»)​ ThisWorkbook.Worksheets(«Лист1»).Range(«J16»).PasteSpecial xlPasteValues End​ в книгу РАБОЧАЯ​ листа является XFD1048578.​ листы (SHIFT+F11) или​ Если переместить или скопировать​Лист будет вставлен и​Для начала мы покажем​и укажите нужный​ Отпустите сначала кнопку мыши,​ задач, на ОС​Midian​ sfol​ на диапазон у​ будет диапазоном все​ String = «Сметный​ отправил заказчику книгу2,​den45444​ With Set ObrazWsh​ в теже листы​В каждую ячейку можно​ удалять неиспользуемые. Сделать​ лист из одной​ его ярлычок появится​ Вам, как скопировать​ цвет.​ а затем — клавишу​ 7 все корректно​:​On Error Resume​ меня ругается на​ таки у меня​ расчет.xlsx»​ мне нужно ее​: Добрый день.​ = ObrazWb.Worksheets(«Лист2») With​ в теже диапазоны​ записать:​ новый лист в​ книги в другую​ справа от ярлычков​ лист из одной​В Excel Online можно​ OPTION.​ закрывается​ViterAlex​ Next​ синтаксис.​ ни так не​Const strNameL As​

CyberForum.ru

​ скопировать в книгу1​

So, what I want to do, generally, is make a copy of a workbook. However, the source workbook is running my macros, and I want it to make an identical copy of itself, but without the macros. I feel like there should be a simple way to do this with VBA, but have yet to find it. I am considering copying the sheets one by one to the new workbook, which I will create. How would I do this? Is there a better way?

Martijn Pieters's user avatar

asked Jul 28, 2011 at 18:34

Brian's user avatar

1

I would like to slightly rewrite keytarhero’s response:

Sub CopyWorkbook()

Dim sh as Worksheet,  wb as workbook

Set wb = workbooks("Target workbook")
For Each sh in workbooks("source workbook").Worksheets
   sh.Copy After:=wb.Sheets(wb.sheets.count) 
Next sh

End Sub

Edit: You can also build an array of sheet names and copy that at once.

Workbooks("source workbook").Worksheets(Array("sheet1","sheet2")).Copy _
         After:=wb.Sheets(wb.sheets.count)

Note: copying a sheet from an XLS? to an XLS will result into an error. The opposite works fine (XLS to XLSX)

answered Jul 28, 2011 at 21:05

iDevlop's user avatar

iDevlopiDevlop

24.6k11 gold badges89 silver badges147 bronze badges

3

Someone over at Ozgrid answered a similar question. Basically, you just copy each sheet one at a time from Workbook1 to Workbook2.

Sub CopyWorkbook()

    Dim currentSheet as Worksheet
    Dim sheetIndex as Integer
    sheetIndex = 1

    For Each currentSheet in Worksheets

        Windows("SOURCE WORKBOOK").Activate 
        currentSheet.Select
        currentSheet.Copy Before:=Workbooks("TARGET WORKBOOK").Sheets(sheetIndex) 

        sheetIndex = sheetIndex + 1

    Next currentSheet

End Sub

Disclaimer: I haven’t tried this code out and instead just adopted the linked example to your problem. If nothing else, it should lead you towards your intended solution.

Community's user avatar

answered Jul 28, 2011 at 19:05

Chris Flynn's user avatar

Chris FlynnChris Flynn

9536 silver badges11 bronze badges

2

You could saveAs xlsx. Then you will loose the macros and generate a new workbook with a little less work.

ThisWorkbook.saveas Filename:=NewFileNameWithPath, Format:=xlOpenXMLWorkbook

answered Jul 28, 2011 at 20:55

Brad's user avatar

BradBrad

11.9k4 gold badges44 silver badges70 bronze badges

2

I was able to copy all the sheets in a workbook that had a vba app running, to a new workbook w/o the app macros, with:

ActiveWorkbook.Sheets.Copy

Prashant Kumar's user avatar

answered Feb 28, 2014 at 17:50

George Ziniewicz's user avatar

Assuming all your macros are in modules, maybe this link will help. After copying the workbook, just iterate over each module and delete it

Community's user avatar

answered Jul 28, 2011 at 18:59

raven's user avatar

ravenraven

4376 silver badges17 bronze badges

Try this instead.

Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
    ws.Copy
Next

ZygD's user avatar

ZygD

21k39 gold badges77 silver badges98 bronze badges

answered Jan 17, 2013 at 21:28

Ch3knraz3's user avatar

You can simply write

Worksheets.Copy

in lieu of running a cycle.
By default the worksheet collection is reproduced in a new workbook.

It is proven to function in 2010 version of XL.

iDevlop's user avatar

iDevlop

24.6k11 gold badges89 silver badges147 bronze badges

answered Feb 17, 2015 at 14:25

Hors2force's user avatar

Hors2forceHors2force

1011 silver badge2 bronze badges

    Workbooks.Open Filename:="Path(Ex: C:ReportsClientWiseReport.xls)"ReadOnly:=True


    For Each Sheet In ActiveWorkbook.Sheets

        Sheet.Copy After:=ThisWorkbook.Sheets(1)

    Next Sheet

answered Feb 22, 2013 at 11:39

Sainath J's user avatar

Here is one you might like it uses the Windows FileDialog(msoFileDialogFilePicker) to browse to a closed workbook on your desktop, then copies all of the worksheets to your open workbook:

Sub CopyWorkBookFullv2()
Application.ScreenUpdating = False

Dim ws As Worksheet
Dim x As Integer
Dim closedBook As Workbook
Dim cell As Range
Dim numSheets As Integer
Dim LString As String
Dim LArray() As String
Dim dashpos As Long
Dim FileName As String

numSheets = 0

For Each ws In Application.ActiveWorkbook.Worksheets
    If ws.Name <> "Sheet1" Then
       Sheets.Add.Name = "Sheet1"
   End If
Next

Dim fileExplorer As FileDialog
Set fileExplorer = Application.FileDialog(msoFileDialogFilePicker)
Dim MyString As String

fileExplorer.AllowMultiSelect = False

  With fileExplorer
     If .Show = -1 Then 'Any file is selected
     MyString = .SelectedItems.Item(1)

     Else ' else dialog is cancelled
        MsgBox "You have cancelled the dialogue"
        [filePath] = "" ' when cancelled set blank as file path.
        End If
    End With

    LString = Range("A1").Value
    dashpos = InStr(1, LString, "") + 1
    LArray = Split(LString, "")
    'MsgBox LArray(dashpos - 1)
    FileName = LArray(dashpos)

strFileName = CreateObject("WScript.Shell").specialfolders("Desktop") & "" & FileName

Set closedBook = Workbooks.Open(strFileName)
closedBook.Application.ScreenUpdating = False
numSheets = closedBook.Sheets.Count

        For x = 1 To numSheets
            closedBook.Sheets(x).Copy After:=ThisWorkbook.Sheets(1)
        x = x + 1
                 If x = numSheets Then
                    GoTo 1000
                 End If
Next

1000

closedBook.Application.ScreenUpdating = True
closedBook.Close
Application.ScreenUpdating = True

End Sub

answered Apr 5, 2020 at 22:26

RWB's user avatar

try this one

Sub Get_Data_From_File()

     'Note: In the Regional Project that's coming up we learn how to import data from multiple Excel workbooks
    ' Also see BONUS sub procedure below (Bonus_Get_Data_From_File_InputBox()) that expands on this by inlcuding an input box
    Dim FileToOpen As Variant
    Dim OpenBook As Workbook
    Application.ScreenUpdating = False
    FileToOpen = Application.GetOpenFilename(Title:="Browse for your File & Import Range", FileFilter:="Excel Files (*.xls*),*xls*")
    If FileToOpen <> False Then
        Set OpenBook = Application.Workbooks.Open(FileToOpen)
         'copy data from A1 to E20 from first sheet
        OpenBook.Sheets(1).Range("A1:E20").Copy
        ThisWorkbook.Worksheets("SelectFile").Range("A10").PasteSpecial xlPasteValues
        OpenBook.Close False
        
    End If
    Application.ScreenUpdating = True
End Sub

or this one:

Get_Data_From_File_InputBox()

Dim FileToOpen As Variant
Dim OpenBook As Workbook
Dim ShName As String
Dim Sh As Worksheet
On Error GoTo Handle:

FileToOpen = Application.GetOpenFilename(Title:="Browse for your File & Import Range", FileFilter:="Excel Files (*.xls*),*.xls*")
Application.ScreenUpdating = False
Application.DisplayAlerts = False

If FileToOpen <> False Then
    Set OpenBook = Application.Workbooks.Open(FileToOpen)
    ShName = Application.InputBox("Enter the sheet name to copy", "Enter the sheet name to copy")
    For Each Sh In OpenBook.Worksheets
        If UCase(Sh.Name) Like "*" & UCase(ShName) & "*" Then
            ShName = Sh.Name
        End If
    Next Sh

    'copy data from the specified sheet to this workbook - updae range as you see fit
    OpenBook.Sheets(ShName).Range("A1:CF1100").Copy
    ThisWorkbook.ActiveSheet.Range("A10").PasteSpecial xlPasteValues
    OpenBook.Close False
End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Exit Sub

Handle:
If Err.Number = 9 Then
MsgBox «The sheet name does not exist. Please check spelling»
Else
MsgBox «An error has occurred.»
End If
OpenBook.Close False
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

both work as

answered Jul 6, 2020 at 4:26

Silvio Rivas's user avatar

How to copy and paste data using a Macro in Excel. I’ll show you multiple ways to do this, including across worksheets and workbooks.

Sections:

Simple Copy/Paste

Copy Entire Range

Copy between Worksheets

Copy between Workbooks

Notes

Simple Copy/Paste

Range("A1").Copy Range("B1")

This copies cell A1 to cell B1.

Range(«A1»).Copy is the part that copies the cell.

Range(«B1») is the cell where the data will be copied.

This is a simple one line piece of code and it’s very easy to use.

Notice that there is a space between these two parts of the code.

Copy Entire Range

Range("A1:A5").Copy Range("B1:B5")

Range(«A1:A5»).Copy is the part that copies the range.

Range(«B1:B5») is the range where the data will be copied.

You can also write it like this:

Range("A1:A5").Copy Range("B1")

Notice that the range to where you will copy the data has only a reference to cell B1.

You only have to reference the very first cell to which the range will be copied and the entire range will copy in the cells below there.

NOTE: if you do it like this, you may end up overwriting data and Excel will not give you a warning about this; the data will simply be filled down as far as it needs to go to copy the first range.

Copy between Worksheets

Sheets("Sheet1").Range("A1").Copy Sheets("Sheet2").Range("B1")

This follows the same pattern as the above examples except that we need to tell the macro from which sheet we want to get the data and to which sheet we want to copy the data.

Sheets(«Sheet1»). is placed in front of the first range and that means to get the data from Sheet1, which is the name of a worksheet in the workbook.

Sheets(«Sheet2»). is placed in front of the range to which we want to copy the data and Sheet2 is the name of the worksheet where the data will be copied.

Copy between Workbooks

Workbooks("Copy and Paste Data using Macro VBA in Excel.xlsm").Sheets("Sheet1").Range("A1").Copy Workbooks("Copy and Paste Data using Macro VBA in Excel.xlsm").Sheets("Sheet3").Range("A1")

Here, we follow the above examples and, this time, add a reference to the workbooks from which we want to get the data and to which we want to place the data.

Workbooks(«Copy and Paste Data using Macro VBA in Excel.xlsm»). is the code that says in which workbook we want to place the data. Copy and Paste Data using Macro VBA in Excel.xlsm is the name of the workbook. In this example I used this for both parts, the workbook from which the data comes and where it goes. This allows you to run this macro within a single workbook and still show you how it works. In a real-world example, the first part contains the name of the workbook where you get the data from and the second contains the name of the workbook where you want to place the data.

Read this tutorial to copy values from another workbook, even if it’s closed.

Notes

All examples in the attached workbook have been commented out. Simply remove the single quote from the line of code you want to test and then run the macro.

cf5e0ebf6d62c9ec73df03c55f727e77.jpg

Download the attached file to get these examples in Excel.

Similar Content on TeachExcel

Activate or Navigate to a Worksheet using Macros VBA in Excel

Tutorial: Make a particular worksheet visible using a macro in Excel.
This is called activating a wo…

Get the Name of a Worksheet in Macros VBA in Excel

Tutorial: How to get the name of a worksheet in Excel using VBA and Macros and also how to store tha…

Get the Last Row using VBA in Excel

Tutorial:
(file used in the video above)
How to find the last row of data using a Macro/VBA in Exce…

Remove Dashed Lines from Copy Paste VBA in Excel

Tutorial: How to remove the flashing dashes from a copy/paste range using VBA in Excel; this removes…

Copy one range and paste in another range

Tutorial: Below is a macro, just copy and paste it into a module in your workbook and go from there…

Guide to Combine and Consolidate Data in Excel

Tutorial: Guide to combining and consolidating data in Excel. This includes consolidating data from …

Subscribe for Weekly Tutorials

BONUS: subscribe now to download our Top Tutorials Ebook!

Понравилась статья? Поделить с друзьями:
  • Excel макросы создать папку
  • Excel макросы две таблицы
  • Excel макросы создание шаблона
  • Excel макросы границы ячеек
  • Excel макросы создание нового листа