Содержание
- Метод Range.Copy (Excel)
- Синтаксис
- Параметры
- Возвращаемое значение
- Пример
- Поддержка и обратная связь
- Метод Worksheet.Copy (Excel)
- Синтаксис
- Параметры
- Замечания
- Пример
- Поддержка и обратная связь
- VBA Excel. Копирование данных с одного листа на другой
- Условие задачи по копированию данных
- Решение копированием с листа на лист
- Решение с использованием массивов
- 6 комментариев для “VBA Excel. Копирование данных с одного листа на другой”
- VBA Excel. Вырезание, копирование и вставка ячеек (диапазонов)
- Метод Range.Cut
- Синтаксис
- Параметры
- Метод Range.Copy
- Синтаксис
- Параметры
- Метод Worksheet.Paste
- Синтаксис
- Параметры
- Примеры
- 43 комментария для “VBA Excel. Вырезание, копирование и вставка ячеек (диапазонов)”
- Метод Sheets.Copy (Excel)
- Синтаксис
- Параметры
- Замечания
- Пример
- Поддержка и обратная связь
Метод Range.Copy (Excel)
Копирует диапазон в указанный диапазон или в буфер обмена.
Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.
Синтаксис
выражение.Copy (Destination)
выражение: переменная, представляющая объект Range.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Destination | Необязательный | Variant | Указывает новый диапазон, в который будет скопирован заданный диапазон. Если этот аргумент опущен, Microsoft Excel копирует диапазон в буфер обмена. |
Возвращаемое значение
Пример
В следующем примере кода копируются формулы ячеек A1:D4 с листа Sheet1 в ячейки с E5:H8 на листе Sheet2.
В приведенном ниже примере кода проверяется значение столбца D для каждой строки на листе Sheet1. Если значение в столбце D равно «A», вся строка копируется на лист SheetA в следующую пустую строку. Если значение равно «B», строка копируется на лист SheetB.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Метод Worksheet.Copy (Excel)
Копирует лист в другое место в текущей или новой книге.
Синтаксис
expression. Копирование (до, после)
Выражение Переменная, представляющая объект Worksheet .
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Before | Необязательный | Variant | Лист, перед которым будет размещен скопированный лист. Невозможно указать параметр Before , если указать After. |
After | Необязательный | Variant | Лист, после которого будет размещен скопированный лист. Вы не можете указать After , если укажем значение До. |
Замечания
Если не указать значение «До» или «После», Microsoft Excel создает новую книгу, содержащую скопированный объект Worksheet . Только что созданная книга содержит свойство Application.ActiveWorkbook и содержит один лист. На одном листе сохраняются свойства Name и CodeName исходного листа. Если скопированный лист содержал лист кода листа в проекте VBA, он также переносится в новую книгу.
Выбор массива из нескольких листов можно скопировать в новый пустой объект Workbook аналогичным образом.
Источник и назначение должны находиться в одном экземпляре Excel.Application. В противном случае возникает ошибка среды выполнения 1004: не поддерживается такой интерфейс, если использовался что-то подобное Sheet1.Copy objWb.Sheets(1) , или ошибка среды выполнения 1004: сбой метода копирования класса Worksheet, если использовалось что-то подобное ThisWorkbook.Worksheets(«Sheet1»).Copy objWb.Sheets(1) .
Пример
В этом примере выполняется копирование Sheet1, помещая его после Sheet3.
В этом примере сначала файл Sheet1 копируется в новую пустую книгу, а затем сохраняет и закрывает новую книгу.
В этом примере листы Sheet1, Sheet2 и Sheet4 копируются в новую пустую книгу, а затем сохраняются и закрываются.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
VBA Excel. Копирование данных с одного листа на другой
Решение задачи по копированию данных с одного листа на другой без использования и с использованием массивов. Вызов из кода VBA Excel других процедур.
Условие задачи по копированию данных
На одном листе расположен список повторяющихся городов с информацией о предприятиях общепита:
Исходная таблица задания №1
Необходимо данные по каждому городу перенести в одну строку на другом листе (таблица обрезана справа):
Часть результирующего списка задания №1
Решение копированием с листа на лист
Это решение значительно проще, чем с использованием массивов, но более медленное. При больших объемах информации обработка может длиться достаточно долго. Решение достигается путем присваивания значений ячеек из таблицы первого листа ячейкам второго листа.
Переменные:
- n1 – количество строк в исходной таблице;
- n2 – номер столбца текущей ячейки исходной таблицы, к которой обращается цикл;
- n3 – номер строки текущей ячейки на втором листе;
- n4 – номер столбца текущей ячейки на втором листе;
- i1 – счетчик цикла For… Next;
- gorod – переменная с наименованием города, предназначенная для контроля за сменой текущего города, который обрабатывается циклом.
Решение с использованием массивов
Циклы в массивах работают очень быстро, но решение с ними может быть сложнее, чем при простом присваивании значений одних ячеек другим. В этом примере для упрощения кода две процедуры записаны отдельно и в нужные моменты вызываются для исполнения.
Подпрограммы Kopirovanie и Vstavka используются в цикле For. Next процедуры Resheniye2 по два раза, поэтому их коды вынесены за пределы процедуры Resheniye2 и вызываются по мере необходимости.
Переменные:
- massiv1 – его элементам присваиваются значения ячеек исходной таблицы;
- massiv2 – одномерный массив, заполняемый данными из переменной txt1;
- massiv3 – двумерный массив, заполняемый данными из одномерного массива massiv2 и используемый для вставки очередной строки на второй лист;
- txt1 – сюда копируются через разделитель значения элементов массива massiv1, предназначенные для заполнения очередной строки на втором листе;
- n1 – количество строк в исходной таблице;
- n2 – количество столбцов в исходной таблице;
- n3 – номер текущей строки на втором листе;
- n4 – количество столбцов текущей строки на втором листе (соответствует количеству элементов массива massiv2);
- i1, i2, i3 – счетчики цикла For… Next;
- gorod – переменная с наименованием города, предназначенная для контроля за сменой текущего города, который обрабатывается циклом.
Переменные, использующиеся более чем в одной процедуре, объявлены как глобальные в разделе Declarations программного модуля.
6 комментариев для “VBA Excel. Копирование данных с одного листа на другой”
Классно! Авторам — уважение! Толково, без соплей, со знанием дела.
Можете подсказать синтаксис такой проблемы: таблица 10 строк, 8 столбцов, если первая ячейка не пустая, скопировать на другой лист этой книги, а лучше — в отдельную книгу всю строку таблицы. Потом то же самое со строкой ниже, и так до последней. Потом пустые строки надо скрыть.
Это сложно?
Заранее спасибо за ответ.
Привет, Илья!
Для диапазона A1:H10:
Здравствуйте, Евгений! Огромное Вам спасибо! Потраченное время и желание помочь дорогого стОит, это большая редкость в наше время, поверьте. Ваш макрос — не совсем то, что мне нужно (например, новую книгу открывать не нужно, она уже есть, нужно просто на неё (и нужный лист) сослаться). Месторасположение ячеек в книгах не совпадает, строки тоже (27-я строка первой книги вставляется в 6-ю второй, т.е., например D27 в E6). И самое главное — вторая книга заполняется с нарастающим итогом. Т.е с первой книги берутся данные, вносятся во вторую, потом первая заполняется по новой, эти данные вносятся во вторую, но уже ниже и т.д.
Но, в любом случае, огромное спасибо, Вы дали направление, куда двигаться, буду думать ):
Добрый день, Евгений!
Существует способ автоматической передачи (копирования) данных из одного файла эксель в другой методом =…
А метод автоматической передачи (копирования) цвета имеется?
Подскажите пожалуйста!
Источник
VBA Excel. Вырезание, копирование и вставка ячеек (диапазонов)
Вырезание, перемещение, копирование и вставка ячеек (диапазонов) в VBA Excel. Методы Cut, Copy и PasteSpecial объекта Range, метод Paste объекта Worksheet.
Метод Range.Cut
Синтаксис
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон ячеек рабочего листа, в который будет вставлен (перемещен) вырезанный объект Range (достаточно указать верхнюю левую ячейку диапазона). Если этот параметр опущен, объект вырезается в буфер обмена. |
Для вставки на рабочий лист диапазона ячеек, вырезанного в буфер обмена методом Range.Cut, следует использовать метод Worksheet.Paste.
Метод Range.Copy
Синтаксис
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон ячеек рабочего листа, в который будет вставлен скопированный объект Range (достаточно указать верхнюю левую ячейку диапазона). Если этот параметр опущен, объект копируется в буфер обмена. |
Метод Worksheet.Paste
Синтаксис
Метод Worksheet.Paste работает как с диапазонами ячеек, вырезанными в буфер обмена методом Range.Cut, так и скопированными в буфер обмена методом Range.Copy.
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон (ячейка), указывающий место вставки содержимого буфера обмена. Если этот параметр не указан, используется текущий выделенный объект. |
Link | Необязательный параметр. Булево значение, которое указывает, устанавливать ли ссылку на источник вставленных данных: True – устанавливать, False – не устанавливать (значение по умолчанию). |
В выражении с методом Worksheet.Paste можно указать только один из параметров: или Destination, или Link.
Для вставки из буфера обмена отдельных компонентов скопированных ячеек (значения, форматы, примечания и т.д.), а также для проведения транспонирования и вычислений, используйте метод Range.PasteSpecial (специальная вставка).
Примеры
Вырезание и вставка диапазона одной строкой (перемещение):
Вырезание ячеек в буфер обмена и вставка методом ActiveSheet.Paste:
Копирование и вставка диапазона одной строкой:
Копирование ячеек в буфер обмена и вставка методом ActiveSheet.Paste:
Копирование одной ячейки и вставка ее данных во все ячейки заданного диапазона:
43 комментария для “VBA Excel. Вырезание, копирование и вставка ячеек (диапазонов)”
Странно, что не рассмотрено копирование ячеек, которые Cells.
Например, следующая строка копирует ячейку A1 в B2
а эта делает тоже самое, но демонстрирует,
как можно добавить размер и смещение:
Здравствуйте!
Скажите, как можно копировать на Лист 1, а вставить на Лист 2 диапазон ячеек целиком, либо отсортированный по 1 признаку диапазон(например по какому-то определенному значению, скажем, числу «500» в одном столбце Листа 1)?
Привет, Максим!
Вот пример сортировки таблицы по значению 500 в первом столбце на «Лист6» и копирования диапазона с «Лист6» на «Лист4» :
Спасибо большое, только я, наверно, неправильно описал ситуацию.
Сперва из эталонной таблицы Лист 1 копируем весь список на существующий Лист4.
Затем, пропускаем шапку, и, начиная со строки7, уже на Лист4 ищем строку, у которой в столбце 5 стоит число 500.
Вырезаем эту строку и вставляем на позицию строки 7. т.е первая после шапки.
Ищем следующую строку — вырезаем, потом вставляем на позицию строки 7+1=8 и т.д.
В итоге оставим только те строки, у которых в столбце 5 стоит число «500», остальные удаляются строки.
(пробовал менять местами строки в предыдущем коде, ошибок нет, копирует, переходит на лист 4, но строки на нем не удаляет, циклы пошагово проходят, но ничего не изменяется.)
Источник
Метод Sheets.Copy (Excel)
Копирует лист в другое место в книге.
Синтаксис
expression. Копирование (до, после)
выражение: переменная, представляющая объект Sheets.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Before | Необязательный | Variant | Лист, перед которым будет размещен скопированный лист. Невозможно указать параметр Before , если указать After. |
After | Необязательный | Variant | Лист, после которого будет размещен скопированный лист. Вы не можете указать After , если укажем значение До. |
Замечания
Если не указать значение «До» или «После», Microsoft Excel создает новую книгу, содержащую скопированный лист.
Пример
В этом примере выполняется копирование Sheet1, помещая его после Sheet3.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
Решение задачи по копированию данных с одного листа на другой без использования и с использованием массивов. Вызов из кода VBA Excel других процедур.
Условие задачи по копированию данных
На одном листе расположен список повторяющихся городов с информацией о предприятиях общепита:
Исходная таблица задания №1
Необходимо данные по каждому городу перенести в одну строку на другом листе (таблица обрезана справа):
Часть результирующего списка задания №1
Решение копированием с листа на лист
Это решение значительно проще, чем с использованием массивов, но более медленное. При больших объемах информации обработка может длиться достаточно долго. Решение достигается путем присваивания значений ячеек из таблицы первого листа ячейкам второго листа.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub Resheniye1() Dim n1 As Long, n2 As Long, n3 As Long, n4 As Long, _ i1 As Long, gorod As Variant n1 = Sheets(«Лист1»).Cells(1, 1).CurrentRegion.Rows.Count For i1 = 1 To n1 With Sheets(«Лист1») If gorod <> .Cells(i1, 1) Then gorod = .Cells(i1, 1) n2 = 1 n3 = n3 + 1 n4 = 1 Else n2 = 2 End If Do While .Cells(i1, n2) <> «» Sheets(«Лист2»).Cells(n3, n4) = .Cells(i1, n2) n4 = n4 + 1 n2 = n2 + 1 Loop End With Next End Sub |
Переменные:
- n1 – количество строк в исходной таблице;
- n2 – номер столбца текущей ячейки исходной таблицы, к которой обращается цикл;
- n3 – номер строки текущей ячейки на втором листе;
- n4 – номер столбца текущей ячейки на втором листе;
- i1 – счетчик цикла For… Next;
- gorod – переменная с наименованием города, предназначенная для контроля за сменой текущего города, который обрабатывается циклом.
Решение с использованием массивов
Циклы в массивах работают очень быстро, но решение с ними может быть сложнее, чем при простом присваивании значений одних ячеек другим. В этом примере для упрощения кода две процедуры записаны отдельно и в нужные моменты вызываются для исполнения.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
‘Объявление глобальных переменных ‘в разделе Declarations Dim massiv1 As Variant, n2 As Long, _ n3 As Long, i1 As Long, txt1 As Variant ‘Исполняемая процедура для решения ‘задания вторым способом Sub Resheniye2() Dim n1 As Long, gorod As Variant With Sheets(«Лист1»).Cells(1, 1) massiv1 = .CurrentRegion n1 = .CurrentRegion.Rows.Count n2 = .CurrentRegion.Columns.Count End With n3 = 0 txt1 = «» For i1 = 1 To n1 If gorod <> massiv1(i1, 1) Then If txt1 <> «» Then Call Vstavka End If gorod = massiv1(i1, 1) txt1 = massiv1(i1, 1) Call Kopirovanie Else Call Kopirovanie End If If i1 = n1 Then Call Vstavka End If Next End Sub ‘Копирование данных из массива в ‘строковую переменную через разделитель Sub Kopirovanie() Dim i2 As Long For i2 = 2 To n2 If massiv1(i1, i2) <> Empty Then txt1 = txt1 & «|» & massiv1(i1, i2) End If Next End Sub ‘Обработка данных из строковой ‘переменной в дополнительных массивах и ‘вставка очередной строки на второй лист Sub Vstavka() Dim n4 As Long, massiv2 As Variant, _ massiv3 As Variant, i3 As Long n3 = n3 + 1 massiv2 = Split(txt1, «|») n4 = UBound(massiv2) ReDim massiv3(0 To 0, 0 To n4) For i3 = 0 To n4 massiv3(0, i3) = massiv2(i3) Next Sheets(«Лист2»).Range(Cells(n3, 1), _ Cells(n3, n4 + 1)).Value = massiv3 End Sub |
Подпрограммы Kopirovanie
и Vstavka
используются в цикле For... Next
процедуры Resheniye2
по два раза, поэтому их коды вынесены за пределы процедуры Resheniye2
и вызываются по мере необходимости.
Переменные:
- massiv1 – его элементам присваиваются значения ячеек исходной таблицы;
- massiv2 – одномерный массив, заполняемый данными из переменной txt1;
- massiv3 – двумерный массив, заполняемый данными из одномерного массива massiv2 и используемый для вставки очередной строки на второй лист;
- txt1 – сюда копируются через разделитель значения элементов массива massiv1, предназначенные для заполнения очередной строки на втором листе;
- n1 – количество строк в исходной таблице;
- n2 – количество столбцов в исходной таблице;
- n3 – номер текущей строки на втором листе;
- n4 – количество столбцов текущей строки на втором листе (соответствует количеству элементов массива massiv2);
- i1, i2, i3 – счетчики цикла For… Next;
- gorod – переменная с наименованием города, предназначенная для контроля за сменой текущего города, который обрабатывается циклом.
Переменные, использующиеся более чем в одной процедуре, объявлены как глобальные в разделе Declarations
программного модуля.
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.
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!
0 / 0 / 0 Регистрация: 23.07.2019 Сообщений: 27 |
|
1 |
|
Excel Копировать содержимое листа одной книги, на лист в новую книгу с присвоением ей имени листа из которого копировали31.07.2019, 16:19. Показов 12978. Ответов 24
Всем доброго дня! Наверное слишком запутанно все описал.
0 |
Заблокирован |
||||
31.07.2019, 17:15 |
2 |
|||
Ivanov_Sergey, примерно так —
0 |
0 / 0 / 0 Регистрация: 23.07.2019 Сообщений: 27 |
|
31.07.2019, 17:23 [ТС] |
3 |
Доброго дня, Остап! Надеюсь есть решение…
0 |
Заблокирован |
||||
31.07.2019, 17:37 |
4 |
|||
Ivanov_Sergey, вот вынудили вы меня открывать excel, в гугл лезть за константой
0 |
0 / 0 / 0 Регистрация: 23.07.2019 Сообщений: 27 |
|
31.07.2019, 18:00 [ТС] |
5 |
Остап, мне очень жаль что я достаю своими глупыми пожеланиями и вопросами. Спасибо. Добавлено через 10 минут Всем доброго дня! Наверное слишком запутанно все описал. Burk, приветствую! Может быть Вы сможете помочь в решении?!
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
31.07.2019, 18:33 |
6 |
|||
Ivanov_Sergey, Вы зря отказываетесь от идеи Остапа
0 |
Burk 1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
||||
31.07.2019, 18:35 |
7 |
|||
Ivanov_Sergey, считаем, что открыты исходная номер 1 и новая Книга под номером 2. Тогда должно сработать так (копируем только значения
Кстати, я вам ведь писал про макререкодер, почему бы вам не попытаться сделать при его поиощи ,
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
31.07.2019, 18:35 |
8 |
Новую книгу закрывать не нужно. Пока её не закроете, в модуле листа будут жить макросы. Потом исчезнут, ибо в файлах «.xlsx» они не живут.
0 |
Ivanov_Sergey 0 / 0 / 0 Регистрация: 23.07.2019 Сообщений: 27 |
||||
31.07.2019, 18:39 [ТС] |
9 |
|||
Pashulka, Burk приветствую вас!
Добавлено через 48 секунд
0 |
0 / 0 / 0 Регистрация: 23.07.2019 Сообщений: 27 |
|
31.07.2019, 18:43 [ТС] |
10 |
Уважаемые программисты, у меня не выходит каменный цветок. Не могу правильно код вставить в переписку, криво отображается. Вот скрин кода прикрепляю. Извиняюсь Миниатюры
0 |
0 / 0 / 0 Регистрация: 23.07.2019 Сообщений: 27 |
|
31.07.2019, 18:50 [ТС] |
11 |
Burk, вот сделал код с его помощью Кстати, я вам ведь писал про макререкодер, почему бы вам не попытаться сделать при его поиощи Добавлено через 4 минуты Пока её не закроете, в модуле листа будут жить макросы. Потом исчезнут, ибо в файлах «.xlsx» они не живут. Попробовал код запустить, но опять вылетела ошибка. Файл (новая книга) не закрылась
0 |
Burk 1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
||||
31.07.2019, 18:57 |
12 |
|||
Ivanov_Sergey, 4 строка неправильно записана, надо так
Добавлено через 2 минуты
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
31.07.2019, 19:02 |
13 |
Попробовал код запустить, но опять вылетела ошибка. Файл (новая книга) не закрылась Почему опять ? Раньше Вы про ошибку не говорили. Впрочем, папку для сохранения лучше указать явно, но даже сейчас — ошибки быть не должно.
0 |
Ivanov_Sergey 0 / 0 / 0 Регистрация: 23.07.2019 Сообщений: 27 |
||||
31.07.2019, 19:03 [ТС] |
14 |
|||
Burk, огромное спасибо. А Вы можете в мой код вживить свой код.
Добавлено через 1 минуту
0 |
1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
|
31.07.2019, 19:15 |
15 |
Ivanov_Sergey, так что у вас в «Заказы-производства.xlsm» в ячейке А1 находится имя будущего файла???
0 |
Ivanov_Sergey 0 / 0 / 0 Регистрация: 23.07.2019 Сообщений: 27 |
||||||||
31.07.2019, 19:22 [ТС] |
16 |
|||||||
Burk, Вы абсолютно правы! Эту часть кода надо сносить.
Добавлено через 2 минуты
0 |
Burk 1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
||||
31.07.2019, 19:48 |
17 |
|||
РешениеЕсли не нужно убирать возможные формулы на листе, то можно так, только разберитесь в именем новой книги, эта строка сейчас закомментирована. Если формулы листа не нужны, то раскомментировать две строки с PasteSpecial
это для загруженного основного файла
1 |
0 / 0 / 0 Регистрация: 23.07.2019 Сообщений: 27 |
|
31.07.2019, 19:56 [ТС] |
18 |
Попробовал снять галочки с этих строк: ‘ Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ Выдает ошибку (см. скрин) Миниатюры
0 |
0 / 0 / 0 Регистрация: 23.07.2019 Сообщений: 27 |
|
31.07.2019, 19:58 [ТС] |
19 |
Burk. Название файла делаем как название листа, из которого копируем
0 |
1813 / 1135 / 346 Регистрация: 11.07.2014 Сообщений: 4,002 |
|
31.07.2019, 20:01 |
20 |
строку 12 уберите, пропустил
1 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
31.07.2019, 20:01 |
20 |
VistaSV30 Пользователь Сообщений: 70 |
#1 08.10.2015 09:08:51 Добрый день!
Спасибо! Изменено: VistaSV30 — 08.10.2015 09:10:21 <#0> |
||
yoozhik Пользователь Сообщений: 239 |
#2 08.10.2015 09:28:52
|
||
VistaSV30 Пользователь Сообщений: 70 |
Спасибо, скопировать получилось! |
Sanja Пользователь Сообщений: 14838 |
#4 08.10.2015 09:43:01 Ну из двух сделайте один макрос. И зачем эти навороты с Set Ar…?
Изменено: Sanja — 08.10.2015 09:47:00 Согласие есть продукт при полном непротивлении сторон. |
||
VistaSV30 Пользователь Сообщений: 70 |
Спасибо, Sanja. Сделал как Вы посоветовали |
Hugo Пользователь Сообщений: 23253 |
#6 08.10.2015 10:12:52 Ещё вариант в одну строку (можно написать ещё чуть короче)
|
||