Remkomplekty.ru

IT Новости из мира ПК
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Excel vba скопировать диапазон ячеек

VBA Excel. Переменная диапазона ячеек (As Range)

Присвоение диапазона ячеек объектной переменной в VBA Excel. Адресация ячеек в переменной диапазона и работа с ними. Определение размера диапазона. Примеры.

Присвоение диапазона ячеек переменной

Чтобы переменной присвоить диапазон ячеек, она должна быть объявлена как Variant, Object или Range:

Чтобы было понятнее, для чего переменная создана, объявляйте ее как Range.

Присваивается переменной диапазон ячеек с помощью оператора Set:

В выражении Range(Cells(3, 4), Cells(26, 18)) вместо чисел можно использовать переменные.

Для присвоения диапазона ячеек переменной можно использовать встроенное диалоговое окно Application.InputBox, которое позволяет выбрать диапазон на рабочем листе для дальнейшей работы с ним.

Адресация ячеек в диапазоне

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

Индексация ячеек в присвоенном диапазоне осуществляется слева направо и сверху вниз, например, для диапазона размерностью 5х5:

Индексация строк и столбцов начинается с левой верхней ячейки. В диапазоне этого примера содержится 5 строк и 5 столбцов. На пересечении 2 строки и 4 столбца находится ячейка с индексом 9. Обратиться к ней можно так:

Обращаться в переменной диапазона можно не только к отдельным ячейкам, но и к части диапазона (поддиапазону), присвоенного переменной, например,

обращение к первой строке присвоенного диапазона размерностью 5х5:

и обращение к первому столбцу присвоенного диапазона размерностью 5х5:

Работа с диапазоном в переменной

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

равнозначны. В обоих случаях информационное сообщение MsgBox выведет значение ячейки с индексом 6.

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

Преимущество работы с диапазоном ячеек в объектной переменной заключается в том, что все изменения, внесенные в переменной, применяются к диапазону (который присвоен переменной) на рабочем листе.

Пример 1 – работа со значениями

Скопируйте процедуру в программный модуль и запустите ее выполнение.

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

Пример 2 – работа с форматами

Продолжаем работу с тем же диапазоном рабочего листа «C6:E8»:

Опять же, обратите внимание, что все изменения форматов в присвоенном диапазоне отобразились на рабочем листе, несмотря на то, что мы непосредственно с ячейками рабочего листа не работали.

Пример 3 – копирование и вставка диапазона из переменной

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

Скопировать и вставить диапазон полностью со значениями и форматами можно при помощи метода Copy, указав место вставки (ячейку) на рабочем листе.

В примере используется тот же диапазон, что и в первых двух, так как он уже заполнен значениями и форматами.

excel vba скопировать диапазон ячеек

Копирует диапазон в указанный диапазон или в буфер обмена. Copies the range to the specified range or to the Clipboard.

Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Interested in developing solutions that extend the Office experience across multiple platforms? Ознакомьтесь с новой моделью надстроек Office. Check out the new Office Add-ins model. У надстроек Office мало места по сравнению с надстройками и решениями VSTO, которые можно создавать с помощью практически любой технологии веб-программирования, например HTML5, JavaScript, CSS3 и XML. Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.

Синтаксис Syntax

выражение.Copy (Destination) expression.Copy (Destination)

выражение: переменная, представляющая объект Range. expression A variable that represents a Range object.

Параметры Parameters

Возвращаемое значение Return value

Пример Example

В следующем примере кода копируются формулы ячеек A1:D4 с листа Sheet1 в ячейки с E5:H8 на листе Sheet2. The following code example copies the formulas in cells A1:D4 on Sheet1 into cells E5:H8 on Sheet2.

В приведенном ниже примере кода проверяется значение столбца D для каждой строки на листе Sheet1. The following code example inspects the value in column D for each row on Sheet1. Если значение в столбце D равно «A», вся строка копируется на лист SheetA в следующую пустую строку. If the value in column D equals A, the entire row is copied onto SheetA in the next empty row. Если значение равно «B», строка копируется на лист SheetB. If the value equals B, the row is copied onto SheetB.

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

Присвоение диапазона ячеек объектной переменной в VBA Excel. Адресация ячеек в переменной диапазона и работа с ними. Определение размера диапазона. Примеры.

Присвоение диапазона ячеек переменной

Чтобы переменной присвоить диапазон ячеек, она должна быть объявлена как Variant, Object или Range:

Читать еще:  Range select vba excel

Чтобы было понятнее, для чего переменная создана, объявляйте ее как Range.

Присваивается переменной диапазон ячеек с помощью оператора Set:

В выражении Range(Cells(3, 4), Cells(26, 18)) вместо чисел можно использовать переменные.

Для присвоения диапазона ячеек переменной можно использовать встроенное диалоговое окно Application.InputBox, которое позволяет выбрать диапазон на рабочем листе для дальнейшей работы с ним.

Адресация ячеек в диапазоне

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

Индексация ячеек в присвоенном диапазоне осуществляется слева направо и сверху вниз, например, для диапазона размерностью 5х5:

Как с помощью vba скопировать данные из одной книги в другую

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

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

Вариант 2:

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

Sub Название_Макроса2()`Открываем файл с которого нужно скопировать данныеWorkbooks.Open Filename:=»C:Данные.xlsx»`Скопировать нужный диапазон в открывшейся книге на листе 1Workbooks(«Данные.xlsx»).Worksheets(«Лист1»).Range(«A16:E16»).Copy`Активируем нужную нам книгуWorkbooks(«Книга1.xlsm»).Activate`Выделяем и вставляем скопированные данные в ячейку А1ActiveWorkbook.Worksheets(«Лист1»).Range(«A1»).SelectActiveSheet.Paste`Закрываем книгу откуда мы скопировали данныеWorkbooks(«Данные.xlsx»).CloseEnd Sub

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

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

данныеabook.Worksheets(«Лист1»).ActivateRange(«A1:I23»).Copy `копируем определенный диапазон листа, укажите свой диапазонbookconst.Worksheets(«Лист1»).Activate `активируем лист куда необходимо вставить данныеRange(«A1:I23»).Select `встаем на ячейку А1Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False`вставляем только форматы ячеекSelection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _SkipBlanks:=False, Transpose:=False`второй листabook.Worksheets(«Лист2»).ActivateRange(«A1:I23»).Copybookconst.Worksheets(«Лист2»).ActivateRange(«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»).ActivateRange(«A1:I23»).Copybookconst.Worksheets(«Лист3»).ActivateRange(«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.Closeabook.ActivateEnd Sub

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

(Пока оценок нет)

Excel VBA диапазон копирования и ячейки

Я пытаюсь скопировать данные из листа в лист Б.

Я хочу скопировать диапазон ячеек из строки 4 в строку 13 столбца X (X=столбец ячейки с самым высоким значением строки 13 и вставить скопированные значения в строку 4 в строку 13 листа B.

Запуск кода не копирует данные, я не получаю никаких ошибок, но ничего не вставляется.

Может кто-нибудь, пожалуйста, взгляните на код, чтобы увидеть, где моя ошибка:

2 Ответа

Вы пытаетесь найти округленное значение в наборе неокругленных данных. CheckForDups-это всегда ничто

У тебя есть это:

И затем эти неявные ссылки на ActiveSheet внутри этого блока With :

Эти неявные ссылки ActiveSheet заставляют ваш код работать в зависимости от того, какой лист в настоящее время активен , что, вероятно, не то, что вы намеревались — Fwiw Rubberduck (проект с открытым исходным кодом VBIDE add-in, которым я управляю) может помочь вам легко найти их везде, где они находятся в вашем проекте:

Решение, скорее всего, квалифицирует эти вызовы точкой, чтобы они работали с объектом dailySht worksheet:

Похожие вопросы:

Как можно найти диапазон ячейки в excel через код C#? xlWorkSheet.Cells[row + 1, col + 1] Я хочу узнать диапазон этой ячейки. Заранее спасибо

Учитывая пример простого файла excel здесь , что такое код VBA для копирования значения, формирования и гиперссылки ячейки? т. е. в ячейке B5 мы вызовем =myCopyCellFunction(B2) и получим точное.

Я пытаюсь определить именованный диапазон в Excel, используя VBA. В принципе, у меня есть переменный номер столбца. Затем выполняется цикл для определения первой пустой ячейки в этом конкретном.

В excel vba я пытаюсь выбрать диапазон значений, начиная с ячейки O2, (O от Oyster) до конца листа, Я стараюсь: Range(O2, Range.End(xlDown)) Но это не удается с Argument Not Optional . Что я делаю.

Мне нужно скопировать диапазон ячеек в другой диапазон, указывающий на первые ячейки. Что-то вроде того: .Cells(1,1) = .Range(B1:B5) Пожалуйста, помогите, это не работает, и я совершенно новый в VBA.

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

Я очень новичок в vba и в основном использую его только при изменении значения диапазона (предварительно записав скрипт с помощью макроса в excel). Поскольку я добавляю / удаляю строки в excel, мне.

Я немного смущен ячейкой и диапазоном в vba (excel). Логически я мог бы представить себе ячейку как диапазон с размером = 1; и я думаю, что легко сделать диапазон из ячейки. Если я читаю свойство.

Читать еще:  Formular1c1 vba excel

Мне нужна помощь со следующей проблемой: Как я могу очистить заполненный цвет ячейки, указав диапазон или бесконечный диапазон в Excel VBA вместо использования UsedRange для очистки заполненного.

Я новичок в программировании VBA, поэтому, пожалуйста, не обижайтесь на этот нетехнический вопрос. У меня есть книга excel с macros, которая была зашифрована. Я смог взломать пароль с помощью этого.

Как с помощью VBA скопировать данные из одной книги в другую

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

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

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

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

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

No related posts.

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

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

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:UsersUserDesktop1.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:UserskarlovDesktopmind»
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:12.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 . Подскажите как правильно это нужно указать. Спасибо.

Читать еще:  Visual studio работа с excel

Решили вопрос? Вам нужно скопировать сначала один диапазон, потом снова выделить книгу откуда вы копируете, например так
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:Users50545Desktop»
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:UsersSlavaDesktopNeuer Ordner1.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») указал ту книгу в которую производить копирование и всё пошло нормально.

Еще раз спасибо.

Да, все верно. Я просто тестировал на своих файлах и забыл поменять. Удачи!

Ссылка на основную публикацию
Adblock
detector