Как с помощью VBA скопировать данные из одной книги в другую
Задача состоит в том, чтобы скопировать определенный диапазон текущего листа, открыть другую книгу, и вставить эти скопированные данные в определенную ячейку, сохранить этот файл и закрыть. Ниже приведен код VBA.
Вариант 2: В открывшейся книге запускаем макрос, чтобы он открыл нужную нам книгу, скопировал от туда нужные нам данные и вставил в нашу открытую книгу, закрыв файл из которого эти данные были скопированы
Еще пример — Скопировать диапазоны данных из активной открытой книги Excel нескольких листов (в нашем примере 3-х листов) в другую книгу, которая хранится в определенном месте. Данные будут вставлены как значения, плюс будут перенесены форматы ячеек.
Если статья была вам полезна, то буду благодарен, если вы поделитесь ей со своими друзьями с помощью кнопок расположенных ниже.
Спасибо за внимание.
Здравствуйте.
А если, например, открыто две книги и находясь в активной книге, как не используя путь, скопировать данные в скрытом листе пассивной книги и вставить их в активную.
Здравствуйте
А если например открыто две книги и находясь в активной книге, как не используя путь скопировать данные с пассивной книги и вставить их в активную.
Hey. I sent a screenshot. Did you get it?
Здравствуйте.
редактирую Ваш код. Возникло 2 проблемы:
1.начало таблицы, из которой необходимо скопировать данные каждый раз начинается с разного номера строки так как в первоначальном файле данные формируются расширенным фильтром (выделено красным)
2.перед тем как скопируются новые данные во второй файл, необходимо , чтобы из этого столбца удалились старые
Sub Макрос()
Range(«b20000:b20100»).Select
Selection.Copy
Workbooks.Open Filename:= «путь к файлу, в который копируем»
Range(«A2»).Select
ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close
End Sub
Можно так сделать или нужно писать другой макрос?
Добрый день. Подскажите что надо поменять в это строчке что бы не прописывать полный путь к файлу, а можно было выбирать диалоговым окном путь и имя файла
Set bookconst = Workbooks.Open(«C:\Users\User\Desktop\1.xlsx»)
Вызов диалогового окна нашел. Спасибо за ответ
Sub AttachFile_test() ‘ пример использования
Filename$ = GetFilePath()
If Filename$ = «» Then Exit Sub
MsgBox «Выбран файл: » & Filename$
End Sub
Function GetFilePath(Optional ByVal Title As String = «Выберите файл для обработки», _
Optional ByVal InitialPath As String = «c:\», _
Optional ByVal FilterDescription As String = «Файлы счетов», _
Optional ByVal FilterExtention As String = «*.*») As String
On Error Resume Next
With Application.FileDialog(msoFileDialogOpen)
.ButtonName = «Выбрать»: .Title = Title:
.InitialFileName = GetSetting(Application.Name, «GetFilePath», «folder», InitialPath)
.Filters.Clear: .Filters.Add FilterDescription, FilterExtention
If .Show -1 Then Exit Function
GetFilePath = .SelectedItems(1)
folder$ = Left(.SelectedItems(1), InStrRev(.SelectedItems(1), «\»))
SaveSetting Application.Name, «GetFilePath», «folder», folder$
End With
End Function
Добрый день! Могли бы Вы помочь в решении проблемы, есть лист который необходимо поделить на несколько новых книг по параметру Город ( т.е. будет новая книга :Москва в которой будет шапка, город, марка,номер, водитель, Питер в которой будет шапка, город, марка,номер, водитель и т.д.) при этом сохранились форматы ячеек, а сама книга будет названа как город который будет в ней. Потом необходимо поделить лист на книги по параметру Марка и книга будет называться как Марка которая в ней будет. Заранее благодарна!
Как можно изменить код макроса, если при открытии файла его нет по указанному адресу. Нужно чтобы макрос остановится и открылось окно с информацией, что файл не найден. Иначе выдаёт ошибку.
Здравствуйте! Помогите, пожалуйста, в решении задачи:
Есть 2 файла. В первом файле хранятся столбцы с данными, файл ежедневно обновляется данными. Во втором — итоговая таблица. Нужно автоматически копировать столбцы из первого файла и вставить в конец таблицы второго.
Помогите, пожалуйста.
Нужен макрос, чтобы по нажатию, копировал данные из определенного статичного столбца в активный столбец (на котором стоит курсор).
Заранее, спасибо!
Включите запись макрорекодера, проделайте всю операцию и остановите запись. Получится нужный вам макрос
Добрый день! Вы просто герой! всем отвечаете и помогаете!
Помогите и мне пожалуйста, Вот код:
Sub форЮля()
Range(«A1:G1»).Select
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
Selection.Copy
ChDir «C:\Users\karlov\Desktop\mind»
Workbooks.Open Filename:=»1″
Range(«A1»).Select
ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close
Application.CutCopyMode = False
End Sub
как сделать так что бы запись в фаил «1» всегда была на одну строчку ниже?
2 дня уже не могу сделать , надеюсь на Вас. Спасибо.
Попробуйте добавить между
Range («A1»).Select и ActiveSheet.Paste
ActiveSheet.Range(«A1»).End(xlDown).Offset(1, 0).Select
ДД!
спасибо большое за Ваш пост! Нужно было переносить строки из общей таблицы на разные листы другой книги.
Подскажите, можно ли добавить условие в код? У меня большая таблица хронометража по разным показателям. Возможно ли копирование только тех ячеек значение которых больше 0?
То, что я имею сейчас:
Sub Перенос_строк_состав_комм_КМ()
Workbooks.Open Filename:=C:\1\2.xlsx»
Workbooks(«2.xlsx»).Worksheets(«приложение 3»).Range(«F30:BC30»).Copy
Workbooks(«КФ.xlsm»).Activate
ActiveWorkbook.Worksheets(«составление комм КМ»).Range(«C5»).Select
ActiveSheet.Paste
Workbooks(«2.xlsx»).Close
End Sub
Добрый день. Ваш код мне очень подходит. Вопрос, как изменить диапазон ячеек в коде, при условии, что я хочу перенести в другую книгу в определенный лист несколько разных ячеек с одного листа НАПРИМЕР диапазоны B7:С24 и H7:I24 . Подскажите как правильно это нужно указать. Спасибо.
Решили вопрос? Вам нужно скопировать сначала один диапазон, потом снова выделить книгу откуда вы копируете, например так
Workbooks(«Книга1.xlsm»).Activate
снова повторить копирование уже другого диапазона
У меня более 30 вкладок в одной книге, и часть ячеек не должна копировать в другую книгу, они должны совместиться. Я уже много перепробовала, но почему то копирует только второй диапазон, а первый будто не видит… например я пишу код
abook.Worksheets(«3»).Activate
Range(«B7:C39», «H7:I39»).Copy
bookconst.Worksheets(«3»).Activate
Range(«B7»).Select ‘выделяем диапазон
а копирует он только диапазон «H7:I39», игнорируя диапазон B7:C39
Так я и не решила эту проблему..
На мой взгляд у вас проблема о объединенных ячейках. У вас 61 и другие строки объединены. Вы попробуйте вручную выделить диапазон B7:C39 — у вас не получится и у VBA тоже не получается
Нужно делать по-отдельности. Сначала одни диапазон, потом второй и так далее
abook.Worksheets («3»).Activate
Range («B7:C39»).Copy
bookconst.Worksheets («3»).Activate
Range («B7»).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 («H7:I39»).Copy
…
Эти Варианты я все перепробовала, решение оказалось таким:
Range(«B9:C2900, D9:E2900, K9:L2900»).Copy
bookconst.Worksheets(«благ»).Activate
Range(«B4»).Select ‘встаем на ячейку А1
При этом в заданных диапазонах не должны быть пересечения объеденных ячеек.
СПАСИБО АВТОРУ
Добрый день,
В коде при варианте 1 выводит ошибку 1004, выделяя желтым строку кода:
Range(«A6»).Select
Подскажите, плиз, как подправить…
В этой строке вряд ли ошибка может быть. Проверил код, должно все работать
Единственное вот тут неправильное описание
Workbooks.Open Filename:= «путь к файлу»
здесь нужно указать не путь к файлу, а только название файла, путь к папке мы указали в чуть выше в коде
Вопрос не актуален, спасибо!
Решение найдено!
Отлично, в чем была причина?
Также, вот чуток модифицированный вариант для того, чтобы данные не перезаписывались, а вставлялись в новую строку:
Range(«A1:E1»).Select
Selection.Copy
ChDir «C:\Users\50545\Desktop»
Workbooks.Open Filename:=»123.xlsx»
ActiveSheet.Range(«A1»).Select
If ActiveSheet.Range(«A1»).Value = «» Then
ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close
Else
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select
ActiveSheet.Paste
ActiveWorkbook.Save
ActiveWorkbook.Close
Создал отдельный модуль для макроса (до этого был в модуле листа)…
Вложение
Добрый день,
К сожалению, ошибку все еще выдает
Прикладываю сам файл и принт-скрин…
Буду признателен за помощь в исправлении…
И вот ещё фаил, в дополнение к первому сообщению. Сразу два не смог отправить.
Доброго времени суток.
Подскажите пожалуйста код макроса со следующим функционалом:
Есть несколько документов. Первый документ — база со всеми данными, а остальные — документы в которых нужно скопировать некоторые данные из базы.
На словах макрос я бы описал так:
Открываем документ «База» вкладка «Лист1» копируем значение ячейки С15, после чего вставляем её в документ «Отчёт» вкладка «Данные» в поле F19.
Далее
Открываем документ «База» вкладка «Лист1» копируем значение ячейки С18, после чего вставляем её в документ «Отчёт» вкладка «Данные» в поле D20.
Далее
Открываем документ «База» вкладка «Лист1» копируем значение ячейки С24, после чего вставляем её в документ «Отчёт» вкладка «Данные» в поле L3.
И так далее…
Да, необходимо копировать только значение (стиль и т.д. не нужно) И если например в базе какая то ячейка стала пустой, то на пустоту необходимо заменить значение, что было прописано ранее в остальных документах.
В программировании не силён, если можно с кратким объяснением.
Пример приложил. Значения цифровые и текстовые, могут быть одновременно. Должны быть скопированы в неизменном виде (как в примере). Поля Параметр 2, Параметр 3 и т.д. роли не играют. Этим я просто показал что ячейки могут находиться в разных местах.
Да, в примере имена людей совпадают, но в реальности они могут отличаться, потому то я и прошу скрипт с указанием с какой в какую ячейку копировать данные. Положение в списке как правило не меняется.
Добрый вечер. Это опять я.
Появилась новая задача. Есть файл источник в котором есть данные.
Тот макрос, который Вы помогли запустить копирует только из этого, определенного файла.
А можно сделать так, чтобы макрос работал из любого другого файла.
То есть я копирую макрос в другой файл , а он сохраняет в отдельный.
нет. все равно заменяет.
может Вы можете помочь немного по другому.
Вот макрос, который копирует нужный диапазон и копирует в нужную книгу.
НО как и в первом варианте надо , после изменения в основном файле данных, вставлять не в туже строку , а в следующую.
Sub Кнопка2 Щелчок()
‘
‘ Кнопка2_Щелчок Макрос
‘
‘ Сочетание клавиш: Ctrl+j
‘
Range(«A7:J7″).Select
Selection.Copy
Workbooks.Open Filename:=»C:\Users\Slava\Desktop\Neuer Ordner\1.xlsm»
Range(«A1:J1»).Select
Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
End Sub
может быть так проще?
Нет, не проще. Проверьте еще раз внимательно. У меня все работает. Данные не заменяются, а вставляются в следующие строку.
Сейчас, кстати заметил, что надо брать не G5000, а F5000 так как в столбце G ничего не вставляется, поэтому он и заменяет данные, так как последняя строчка всегда одна и та же
Добрый вечер. Хочу Вас поблагодарить. Все получилось.
Только я методом «тыка» изменил немного код. А именно вот эту строку
iLastRow = Workbooks(«Книга1.xlsm»).Worksheets(«Лист1»).Range(«F5000»).End(xlUp).Row + 1
у Вас стоял («Книга1.xlsm») а я написал («1.xlsm») указал ту книгу в которую производить копирование и всё пошло нормально.
Еще раз спасибо.
Да, все верно. Я просто тестировал на своих файлах и забыл поменять. Удачи!
Как перенести макрос из одного файла в другой excel
Я не волшебник. Я только учусь
Открываешь свой файл и файл с календарем.
Заходишь в редактор VBA.
Открываешь Wiev — Project Explorer (если закрыт)
Открываешь Forms
Хватаешь мышом DateForm и тащишь в норку (свой файл).
Аналогично с модулями и модулями класса.
ВСЕ! Календарь в твоем файле!
А для запуска календаря в модуле Лист1 прописан код
Private Sub Worksheet_SelectionChange
Но этот код вызывает календарь только в столвце F
Процедуру вызова необходимо изменить в соответствии с желаниями.
Поищи на планете «всплывающий календарь, открытый код» или «почему к всех работает, а у Мули нет»
Там куча различных процедур запуска календаря
Открываешь свой файл и файл с календарем.
Заходишь в редактор VBA.
Открываешь Wiev — Project Explorer (если закрыт)
Открываешь Forms
Хватаешь мышом DateForm и тащишь в норку (свой файл).
Аналогично с модулями и модулями класса.
ВСЕ! Календарь в твоем файле!
А для запуска календаря в модуле Лист1 прописан код
Private Sub Worksheet_SelectionChange
Но этот код вызывает календарь только в столвце F
Процедуру вызова необходимо изменить в соответствии с желаниями.
Поищи на планете «всплывающий календарь, открытый код» или «почему к всех работает, а у Мули нет»
Там куча различных процедур запуска календаря RAN
Быть или не быть, вот в чем загвоздка!
Сообщение Открываешь свой файл и файл с календарем.
Заходишь в редактор VBA.
Открываешь Wiev — Project Explorer (если закрыт)
Открываешь Forms
Хватаешь мышом DateForm и тащишь в норку (свой файл).
Аналогично с модулями и модулями класса.
ВСЕ! Календарь в твоем файле!
А для запуска календаря в модуле Лист1 прописан код
Private Sub Worksheet_SelectionChange
Но этот код вызывает календарь только в столвце F
Процедуру вызова необходимо изменить в соответствии с желаниями.
Поищи на планете «всплывающий календарь, открытый код» или «почему к всех работает, а у Мули нет»
Там куча различных процедур запуска календаря Автор — RAN
Дата добавления — 31.08.2011 в 12:52
4 Копирование макроса в другую книгу
Созданный макрос действует во всех листах открытой книги. Для копирования макроса в другую книгу нужно:
1 Открыть книгу, содержащую копируемый модуль, и книгу, в которую нужно его копировать – через меню Файл\Открытьили кнопкуОткрытьна панели инструментовСтандартная.
2 В меню Сервис установить курсор на пунктМакроси выбрать ко-
манду Редактор Visual Basic.
3 В меню Видвыбрать командуОкно проекта.
4. Перетащить в Окне проекта с помощью мыши копируемый модуль в нужную книгу.
Примечание.Чтобы получить возможность использовать макрос в любое время, сохраните его в личной книге макросов. Он получит имя следующим форматом: «PERSONAL.XLS. Имя макроса».
Более сложные макросы создаются с помощью редактора Visual Basic.
Контрольные вопросы
1 Что называется макросом, для чего он предназначен?
2 Как записать макрос?
3 Способы запуска макроса (перечислить).
4 Запись макроса, запускаемого из меню Сервис и сочетанием клавиш с клавиатуры.
5 Использование относительной и абсолютной адресации при записи макросов.
6 Создание новой панели инструментов. Назначение кнопки для запуска макроса на новой панели инструментов .
7 Добавление кнопки запуска макроса на существующие панели инструментов (Стандартная,Форматирование и др.).
8 Добавление кнопки запуска на рабочий лист с помощью панели инструментов Формы.
9 Копирование модуля макроса в другую книгу.
1 Разработать макрос для вычисления прогнозируемых значений функции y= 0,2·x n , гдеn– номер компьютера в аудитории. Предварительно функцию нужно ввести в ячейки столбца или строки процессораExcel, задав изменение аргументах в пределах 1. 7 с шагом 1 и вычислив в соседнем столбце (или строке) по введённой формуле значения функции у (см. л.р.excel– 3). Прогноз выполнить с помощью функций ТЕНДЕНЦИЯ или РОСТ (см. л.р.excel– 4).
Макрос должен запускаться кнопкой на панели Стандартнаяи кнопкой, расположенной на рабочем листе.
2 Разработать макрос для построения графика функции y = 2·sin(n·x), гдеn– номер компьютера в аудитории, для 10 значений аргумента х = 1. 10. При записи макроса использовать относительную адресацию. Макрос должен запускаться сочетанием клавиш с клавиатуры и командой из менюСервис.
3 Открыть новую книгу и скопировать в неё оба макроса. Создать новую панель инструментов. Назначить макросам новые кнопки для их запуска с новой панели инструментов.
Содержание отчёта
1 Название, цель, содержание работы
2 Задание своего варианта
3 Письменные ответы на контрольные вопросы
4 Выводы по работе
На жестком диске результаты работы должны быть сохранены для показа преподавателю.
Лабораторная работа №7
Поиск решения в Excel
Цель работы: научиться использовать процессор Excel
для решения задач оптимизации
Содержание работы:
1 Создание формы
2 Ввод данных в окно Поиск решения
3 Задание параметров поиска и решение задачи
Общие сведения
Математический аппарат Excel позволяет решать задачи линейного, нелинейного и целочисленного программирования. При этом оптимизация решения выполняется методом поиска решения, который запускается командой Сервис\Поиск решения.
Задача линейного программирования (ЗЛП) в общем случае формулируется следующим образом:
Определить максимум (минимум) целевой функции F max(min) при заданной системе ограничений (2) и граничных условий (3):
Fmax(min) =A1*X1+A2*X2+. +An*Xn (1)
Рассмотрим применение процессора Excel для решения ЗЛП на примере.
Задача. МП выпускает товары Х1,Х2,Х3,Х4, получая от реализации каждого прибыль в 60,70,120,130 руб. соответственно. Затраты на производство приведены в табл. 1. Определить:
Как импортировать макросы для Excel?
Видео: Excel. Макросы. Как перенести готовый макрос в свой файл (Июнь 2023)
Макросы Excel связаны только с книгой, в которой они созданы. Однако нет необходимости заново создавать хороший макрос в другой книге, чтобы применить те же действия. Макросы можно копировать, перемещать или делать доступными для других рабочих книг.
Скопируйте макрос из одной рабочей книги в другую
Возможно, самый простой способ «импортировать» макрос из одной рабочей книги в другую — использовать «Копировать и вставить».
Выберите разработчик вкладку и нажмите на макрос кнопка для отображения диалогового окна Macro.
кредит: Рон Прайс
кредит: Рон Прайс
В диалоговом окне Макрос выберите макрос Вы хотите отобразить в редакторе Visual Basic (VB) и нажмите на редактировать кнопка для отображения кода VBA макроса.
кредит: Рон Прайс
В редакторе VB выберите только операторы программного кода макроса; не включайте заголовок макроса или последнюю строку. Нажмите на редактировать и выберите копия из выпадающего меню, чтобы скопировать выделенный код.
кредит: Рон Прайс
Откройте книгу, в которую нужно добавить макрос. На вкладке Разработчик, нажмите на макрос кнопка. Присвойте имя макросу, а затем нажмите на Создайте кнопка для отображения редактора VB. Когда редактор VB откроется, поместите курсор на пустую строку между двумя операторами. Нажмите на редактировать и выбрать Вставить из раскрывающегося меню, чтобы вставить скопированный код. Нажмите на файл а также Сохранить сохранить рабочую книгу и макрос.
Экспорт и импорт макроса
Этот метод создает файл кода VB (файл BAS), который можно экспортировать, чтобы его можно было импортировать в другие книги Excel.
кредит: Рон Прайс
Откройте редактор VB и отобразите макрос, который вы хотите экспортировать. Нажмите на файл и выбрать Экспорт файла.
кредит: Рон Прайс
В диалоговом окне «Сохранить файл» перейдите к папке, в которую нужно сохранить файл, назовите файл и нажмите Сохранить, Теперь файл доступен для импорта в другие рабочие книги.
кредит: Рон Прайс
Чтобы импортировать файл BAS и добавить его в проект книги, выберите вкладку «Разработчик» и щелчок на кнопку Visual Basic, чтобы открыть редактор VB. В редакторе VB нажмите файл а затем нажмите Импортировать файл отобразить диалоговое окно «Импорт файла». проводить в соответствующую папку и Выбрать файл для импорта. Нажмите открыто импортировать файл.
Создание персональной макрокоманды
Когда Excel запускается, он открывает файл Personal.xlsb, если он присутствует, как скрытую книгу. Этот файл содержит макросы, доступные для любой книги Excel, работающей на одном компьютере. Создание файла Personal.xlsb предоставляет библиотеку макросов макросов, доступных на этом компьютере.
кредит: Рон Прайс
Чтобы создать файл Personal.xlsb, откройте новый Рабочая тетрадь в Excel. На разработчик вкладку, нажмите на Запись макроса кнопка для отображения Запись макроса диалоговое окно.
кредит: Рон Прайс
Присвойте имя макросу, затем выберите Личная Макро Книга на опцию «Сохранить макрос как». Нажмите Хорошо начать запись. Выполните действия, которые будут включены в макрос. Когда действия будут завершены, нажмите на Остановить запись на вкладке Разработчик или нажмите Остановить запись кнопка в строке состояния в левом нижнем углу книги.
кредит: Рон Прайс
После завершения макроса, нажмите на кнопку Visual Basic на вкладке Разработчик, чтобы открыть VB редактор, Выбрать VBAPROJECT (PERSONAL.XLSB) в проект панель. Нажмите на файл а затем Сохранить PERSONAL.XLSB вариант.
Как запустить макросы Excel в Mac iWork
Если вы часто используете электронные таблицы, вы, вероятно, использовали мини-программу для автоматизации функций в вашей электронной таблице. Эти пользовательские макросы (или сценарии) часто программируются в .
Как найти скрытые макросы в электронной таблице Excel
Макросы являются мощной функцией в Microsoft Excel и позволяют программно управлять несколькими функциями Excel. Приложения, которые могут занимать сотни ячеек вычислений .
Как записывать и запускать макросы для автоматизации задач в слове
Вы часто выполняете одни и те же действия в Word? Сэкономьте время, создав макрос для запуска нескольких действий одним щелчком мыши.