Копировать данные из открытой книги и вставить значение закрытую книгу
Пользователь
Сообщений: Регистрация: 04.08.2013
01.10.2025 11:32:26
Здравствуйте подскажите пожалуйста, как можно копировать данные из открытой книги и вставить значение закрытую книгу? В данном макросе вставляет формулу, а нужно значение:
Код
Sub Копировать_В_путь_в_определенной_ячейки()
With Sheets("Лист1")
End With
Dim wb As String: wb = [A1] 'путь к основной книге (куда копировать)
With Application
.EnableEvents = False
.Calculation = xlCalculationManual
.ScreenUpdating = False
Application.ScreenUpdating = False
Workbooks.Open Filename:=wb
ThisWorkbook.ActiveSheet.Range("C10:C11").Copy ActiveWorkbook.Sheets("Лист2").Range("A10") 'копируем все данные с активного листа
ThisWorkbook.ActiveSheet.Range("E10:E11").Copy ActiveWorkbook.Sheets("Лист2").Range("B10") 'копируем все данные с активного листа
ActiveWorkbook.Close (True)
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
Application.ScreenUpdating = False
End With
End Sub
Макросом копировать и вставить строки на двух листах
Пользователь
Сообщений: Регистрация: 04.08.2013
12.06.2025 19:29:37
Здравствуйте подскажите пожалуйста. Мне нужно копировать 4 строки на листе "Яблоко" и "Груша" (должен быть скрыт). Ссылки относительные. То есть если я встаю на лист "Яблоко" встаю на 20 строку то с "20:23", если с 27 строки, то "27:30", жму на макрос и он должен скопировать строки с "20:23", одновременно должны копироваться те же строки и на листе "Груша". И вставить с нужной мне строки.
Макросом удалить строки с двух листов
Пользователь
Сообщений: Регистрация: 04.08.2013
11.06.2025 11:17:01
Здравствуйте подскажите пожалуйста. Мне нужно удалить 4 строки на листе "Яблоко" и "Груша" (должен быть скрыт). То есть если я встаю на лист "Яблоко" на ячейку "A15", жму на макрос и он должен удалить строки с "15:18", одновременно должны удалиться те же строки и на листе "Груша".
Код
Sub Удалить_Строки()
Sheets(Array("Яблоко", "Груша")).Select
ActiveCell.Rows("1:4").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
Sheets("Яблоко").Select
End Sub
Этот макрос выдает ошибку только, когда лист "Груша" скрыт
Собрать несколько столбцов в один
Пользователь
Сообщений: Регистрация: 04.08.2013
09.06.2025 17:01:26
Здравствуйте, помогите с макросом. Нашел макрос, который берет столбцы на листе "Лист1" и вставляет на "Лист3". Так-то подходит макрос, но только нужно чтобы он Не удалял шапку на "Лист3", и вставлял собранные столбцы с ячейки "A2".
Код
Sub Collect()
Dim i As Long, j As Long, a(), b()
Application.ScreenUpdating = False
a = Sheets("Лист1").UsedRange.Value: Cells.Clear
For i = 1 To UBound(a, 2) ' с какого столбика копировать "i = 4"
j = Cells(Rows.Count, 1).End(xlUp).Row + 1
b = Application.Index(a, 0, i)
Cells(j, 1).Resize(UBound(b)).Value = b
Next
Columns(1).SpecialCells(4).Delete xlUp
End Sub
Изменено: - 09.06.2025 17:29:51
Протянуть формулу и вставить значение в столбце "D" ориентируясь по столбцу "G"
Пользователь
Сообщений: Регистрация: 04.08.2013
11.04.2025 11:14:37
Здравствуйте, подскажите пожалуйста. Как можно сделать так, чтобы макросом протянуть формулу и вставить значение в столбце "D" ориентируясь по столбцу "G". Например если в столбце "G" есть слово "Яблоко", то в столбец "D" вставить формулу "Случайное_значение_1", если в столбце "G" есть слово "Апельсин", то в столбец "D" вставить формулу "Случайное_значение_2", если в столбце "G" есть слово "Лимон", то в столбец "D" вставить формулу "Случайное_значение_3", если в столбце "G" есть слово "Груша", то в столбец "D" вставить формулу "Случайное_значение_4", а если в столбце "G" пустая ячейка то ни чего не вставлять, и так до последней заполненной ячейки в столбце "D"
[ Закрыто] Разрешить выполнение макроса по условию
Пользователь
Сообщений: Регистрация: 04.08.2013
02.04.2025 07:21:35
Здравствуйте помогите, со следующим вопросом. У меня в книге есть макрос, который проверяет, что он должен запускаться с "Листа1" и столбца "A:A". Как сделать так, чтобы он запускался после слова "Лимон" в столбце "A:A", а до этого слова запретить?
Запуск формы после определенного слова в столбце
Пользователь
Сообщений: Регистрация: 04.08.2013
01.04.2025 08:04:20
Здравствуйте, подскажите пожалуйста. У меня сейчас форма всплывает тогда когда я выделяю любую ячейку с "C2:C10000", а можно сделать так, чтобы форма начала всплывать только после определенного слова в этом столбце, например слово "Яблоко", это слово может быть в любой ячейки с в столбце "С".
Как сделать чтобы с календарем вносилось и время
Пользователь
Сообщений: Регистрация: 04.08.2013
17.03.2025 15:50:51
Здравствуйте, помогите пожалуйста. У меня есть готовый календарь, там можно нажать галочку на "checkbox" и появиться возможность вводить время, но оно почему-то не вносится. Как быть?
Создать список без повтор с отключенными окнами
Пользователь
Сообщений: Регистрация: 04.08.2013
14.03.2025 09:46:32
Здравствуйте у меня есть макрос, который берет диапазон списка из всплывающего окна на одном листе, и формирует его, с нужной мне ячейки который указывается в всплывающей форме без повторов на другом. Вопрос как можно отключить всплывающие формы, чтобы диапазон ячеек, и с какой ячейки было прописано только в макросе?
Формула как вытащить текст между 4-мя символами
Пользователь
Сообщений: Регистрация: 04.08.2013
25.02.2025 00:47:42
Здравствуйте подскажите пожалуйста как формулой из такого текста "от 0,1 до 150 (мг/м³)", те между "от" и "до" вытащить "0,1", и между "до" и "(" вытащить "150". Вот такой формулой "=ABS(ПСТР(C3;1+ПОИСК("т";C3);ПОИСК("д";C3)-ПОИСК("т";C3)-1))" я вытащил "0,1" . Далее пытался вот этой вытащить не получается "=ABS(ПСТР(C3;1+ПОИСК("до";C3);ПОИСК("(";C3)-ПОИСК("до";C3)-1))". Цифры между ними всегда разные. Пример прилагаю.
Как выполнить "Эмуляцию F2", до последней заполненной ячейки
Пользователь
Сообщений: Регистрация: 04.08.2013
06.03.2024 21:56:59
Как выполнить "Эмуляцию F2", до последней заполненной ячейки в столбце код взят . А почему "Num Lock" отключается?
Код
Sub Emul_F2()
ActiveCell.Select
Dim lCnt As Long
Do While lCnt < 150
Application.SendKeys "{F2}"
Application.SendKeys "{ENTER}"
lCnt = lCnt + 1
Loop
End Sub
Изменено: - 06.03.2024 21:57:50
Скопировать данные с формулами из одной книги в другую не изменяя формул
Пользователь
Сообщений: Регистрация: 04.08.2013
18.01.2023 16:38:42
Здравствуйте, есть макрос который копирует данные с одной книги в другую. Но возникает проблема при копировании из "Книга1" в "Книга2" , формулы в "Книга2" начинаю ссылаться на "Книга1", а надо чтобы они остались не изменены. Как это сделать подскажите?
Код
Sub vst()
Dim wb As String: wb = ThisWorkbook.Path & "\Книга2.xlsm" 'путь к основной книге (куда копировать)
With Application
.EnableEvents = False
.Calculation = xlCalculationManual
.ScreenUpdating = False
.Visible = False
Workbooks.Open Filename:=wb
ThisWorkbook.Worksheets("Таблица").Cells.Copy ActiveWorkbook.Worksheets("Таблица").Cells 'копируем все данные с активного листа
'Workbooks("Куда.xlsm").Worksheets("Лист1").Range("A1:G25").Copy
ActiveWorkbook.Close (True)
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.Visible = True
End With
End Sub
Относительная ссылка на другой лист через форму
Пользователь
Сообщений: Регистрация: 04.08.2013
16.01.2023 00:46:41
Здравствуйте подскажите пожалуйста, как здесь прописать относительную ссылку на другой лист а не на активный "TextBox1 = ActiveCell.Range("A1").Offset(0, 0)". Например я на ходился бы на "Лист1" "D5", а данные с формы отображались с "Лист2" "D5"
Сбор данных из выделенных листов
Пользователь
Сообщений: Регистрация: 04.08.2013
11.12.2022 20:46:59
Здравствуйте подскажите пожалуйста нашёл вот такой макрос, как можно сделать так чтобы сбор данных осуществлялся не со всех листов из выделенных через "ctrl". Сбор данных может осуществлялся с разных листов
Перенести данные с одного столбца в другой без пустых ячеек
Пользователь
Сообщений: Регистрация: 04.08.2013
25.11.2022 12:59:19
Здравствуйте, подскажите пожалуйста как перенести данные с одного столбца "L" в столбец "X" без пустых ячеек, как в примере. Количество строк может быть разное.
Макросом протянуть формулу
Пользователь
Сообщений: Регистрация: 04.08.2013
07.06.2022 23:18:08
Здравствуйте, помогите подкорректировать макрос, нужно чтобы он не только протягивал формулу, но и не трогал те ячейки в которые заполнены
Код
Sub Протянуть_формулу()
[I12].Resize(Cells(Rows.Count, "a").End(xlUp).Row - 1, 1).FormulaR1C1 = "=VLOOKUP(RC[-7],Повторы!C[-8]:C[-7],2,0)"
End Sub
Метод pastespecial из класса worksheet завершен неверно
Пользователь
Сообщений: Регистрация: 04.08.2013
04.05.2022 10:30:37
Здравствуйте, помогите пожалуйста разобраться. В одной книге работает она была создана 2010 office, из неё скопировал, этот код в книгу 2021 office, и в ней он не работает. Как быть?
Как разбить текст в ячейки внесенный через ALT+ENTER
Пользователь
Сообщений: Регистрация: 04.08.2013
13.10.2021 15:04:24
Здравствуйте подскажите пожалуйста. Как можно разбить текст в ячейки внесенный через ALT+ENTER, как у меня в примере
Как из TextBox вставить текст в первую незаполненную ячейку
Пользователь
Сообщений: Регистрация: 04.08.2013
08.10.2021 15:28:13
Здравствуйте, помогите пожалуйста с такой задачей. На "Лист1" я вызываю форму, там я вбиваю текст "TextBox1", в вожу числа"TextBox2", "TextBox3", "TextBox4", нажимаю кнопку добавить. И нужно, чтобы найти на листе "Список", в столбце "A" последнюю не заполненную ячейку, например "A30", вставить туда из текст "TextBox1", следовательно из "TextBox2" в "B30", "TextBox3" в "C30", "TextBox4" в "D30", но нужно вставить как число. Спасибо кто поможет.
Как обойти копирование с выше 255 символов
Пользователь
Сообщений: Регистрация: 04.08.2013
03.10.2021 09:46:36
Здравствуйте подскажите, очень нужна помощь. Как в этом коде обойти копирование с выше 255 символов:
Код
Sub ReplaceInWord()
'имя шаблона Word с основным текстом и метками
Const sWDTmpl As String = "Шаблон.docx"
Dim objWrdApp As Object, objWrdDoc As Object, wdRange As Object
Dim IsNeedClose As Boolean
Dim ws As Worksheet
Dim lr As Long, llastr As Long, lc As Long, llastc As Long
Dim sPath As String, sToSavePath As String, sWDTmplFullName As String, sWDDocName As String
Dim sFindVal As String, sReplaceVal As String
On Error Resume Next
'пытаемся подключится к объекту Word
Set objWrdApp = GetObject(, "Word.Application")
If objWrdApp Is Nothing Then
'если приложение закрыто - создаем новый экземпляр
Set objWrdApp = CreateObject("Word.Application")
'делаем приложение видимым. По умолчанию открывается в скрытом режиме
objWrdApp.Visible = True
IsNeedClose = True
End If
'путь к папке с файлом кода
'здесь же должен лежать файл шаблона Word
sPath = ThisWorkbook.Path
'добавляем разделитель папок, если его нет
sPath = IIf(Right(sPath, 1) = Application.PathSeparator, "", sPath & Application.PathSeparator)
'полный путь к файлу шаблона
sWDTmplFullName = sPath & sWDTmpl
'создаем папку для сохранения создаваемых файлов Word
sToSavePath = sPath & Format(Now, "YYYY_MM_DD hh_mm")
If Dir(sToSavePath, 16) = "" Then
MkDir sToSavePath
End If
sToSavePath = IIf(Right(sToSavePath, 1) = Application.PathSeparator, "", sToSavePath & Application.PathSeparator)
Set ws = Sheets("Word(копировать)")
With ws
'определяем последнюю заполненную ячейку на основании столбца А
llastr = .Cells(.Rows.Count, 1).End(xlUp).Row
'определяем последний столбец на основании столбца с метками
llastc = .Cells(1, .Columns.Count).End(xlToLeft).Column
'просмотр начинаем с 3-ей строки, т.к. именно с неё начинаются наши данные
For lr = 3 To llastr
'считываем фамилию с инициалами
sWDDocName = .Cells(lr, 1).Value
If sWDDocName <> "" Then
'заменяем точки на пусто для удобочиатемости имен файлов
sWDDocName = Replace(sWDDocName, ".", "")
'составляем полный путь к создаваемому файлу,
'при этом берем тоже расширение файла, что и шаблона
sWDDocName = sToSavePath & sWDDocName & ".doc"
'создаем новый документ Word на основании шаблона
Set objWrdDoc = objWrdApp.Documents.Add(sWDTmplFullName)
For lc = 1 To llastc
'запоминаем метку для поиска в файле Word
sFindVal = .Cells(1, lc).Value
'этим значением будем заменять текст метки
sReplaceVal = .Cells(lr, lc).Text
Set wdRange = objWrdDoc.Range
'заменяем метки {*} на текст из ячеек
wdRange.Find.ClearFormatting
wdRange.Find.Replacement.ClearFormatting
With wdRange.Find
.Text = sFindVal
.Replacement.Text = sReplaceVal
.Forward = True
.Wrap = 1 'wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
wdRange.Find.Execute Replace:=2 'wdReplaceAll
Next lc
'сохраняем созданный документ, но не добавляем в список последних открытых
objWrdDoc.SaveAs FileName:=sWDDocName, AddToRecentFiles:=False
'закрываем документ Word
objWrdDoc.Close False
End If
Next
End With
If IsNeedClose Then
'закрываем приложение Word если открывали его кодом
objWrdApp.Quit
End If
'очищаем переменные Word
Set objWrdDoc = Nothing
Set objWrdApp = Nothing
'
MsgBox "Файлы созданы и сохранены в папке '" & sToSavePath & "'", vbInformation, "www.excel-vba.ru"
End Sub
Как продолжить нумерацию колонтитулов с другого листа
Пользователь
Сообщений: Регистрация: 04.08.2013
01.10.2021 14:25:05
Здравствуйте, подскажите, как решить такую проблемку. У меня на "Лист1" он является титульным листом ориентация книжная количество страниц может быть разное. И "Лист2" он является протоколом ориентация альбомная. Нужно у казать колонтитул на "Лист1" начинаться страница 1 количество страниц может быть разное общее количество страниц должно быть подсчитано из "Лист1" и "Лист2". Например "Лист1" занимает две страницы, "Лист2" занимает семь страниц. Значит на "Лист1", общее количество страниц 9, страница 1. А "Лист2", тоже самое только начинаться должен с учетом "Лист1", то есть с третьей страницы, хотя фактически это будет страница один. Вот так вот.
Создать папку и в неё сохранить PDF из книги
Пользователь
Сообщений: Регистрация: 04.08.2013
29.09.2021 13:07:57
Здравствуйте, помогите пожалуйста со следующем макросом. Вообщем нужно создать папку в директории из которой запущен макрос, назвать папку как книгу из которой запущен макрос и выполнить следующий макрос в эту книгу
Создать копию книги и сохранить название из ячейки
Пользователь
Сообщений: Регистрация: 04.08.2013
28.09.2021 17:12:50
Помогите дописать макрос
Код
Sub Макрос_1()
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & CStr(Worksheets("Лист1").Range("D8")) & ".xlsm"
Application.DisplayAlerts = True
End Sub
Нужно, чтобы макрос создал копию файла сохранил его название из ячейки, и при этом остаться в открытой книги с которой был запущен макрос
Как автоматически из формы из combobox и Label разнести по ячейкам?
Пользователь
Сообщений: Регистрация: 04.08.2013
03.09.2021 13:06:32
Как автоматически разнести из формы из combobox и Label разнести по ячейкам? Например нужно после выбора из списка Combobox3 автоматически перенести на "Лист3!E15", а из Label24 в "Лист3!G17".
Изменено: - 03.09.2021 19:59:16
Как на форме обновить label при изменении ComboBox
Пользователь
Сообщений: Регистрация: 04.08.2013
02.09.2021 16:36:35
Как на форме обновить label при изменении ComboBox? Например в ComboBox выбираю "яблоко" в label автоматические отображается "растение", в ComboBox выбираю "гвоздь", в label автоматические отображается "металл.
Копирование данных из книги вместе с формулами
Пользователь
Сообщений: Регистрация: 04.08.2013
27.01.2021 23:22:25
Помогите в следующем вопросе. Как скопировать данные из-за крытой книги вместе с формулами и форматами. в ниже приведенном коде?
Код
Sub Get_Value_From_Close_Book()
Dim sShName As String, sAddress As String, vData
'Отключаем обновление экрана
Application.ScreenUpdating = False
Workbooks.Open "C:\Documents and Settings\Книга1.xls" '"
sAddress = "A1:C100" 'или одна ячейка - "A1"
'получаем значение
vData = Sheets("Лист1").Range(sAddress).Value
ActiveWorkbook.Close False
'Записываем данные на активный лист книги,
'с которой запустили макрос
If IsArray(vData) Then
[A1].Resize(UBound(vData, 1), UBound(vData, 2)).Value = vData
Else
[A1] = vData
End If
'если надо копировать ячейки с форматами,
'то можно использовать стандартные методы копирования вставки
'objCloseBook.Sheets("Лист1").Range(sAddress).Copy
'[A1].PasteSpecial xlPasteValues 'вставляем значения
'[A1].PasteSpecial xlPasteFormats 'вставляем форматы
'Включаем обновление экрана
Application.ScreenUpdating = True
End Sub
Взято
Изменено: - 28.01.2021 01:01:41
Как с помощью формулы можно проверить входит ли дата в диапазон нескольких дат
Пользователь
Сообщений: Регистрация: 04.08.2013
26.01.2021 20:48:54
Здравствуйте прошу помощи в следующем вопросе. У меня есть таблица на листе "СИ", в неё вбиваются название прибора и для каждой поверке прибора выдаётся № свидетельства и дата поверки от и до. Соответственно, когда дата поверки подходит к концу, прибор отправляется в поверку и ему выдают новое № свидетельство и дата поверки от и до. И это происходит, каждый год. На листе "Данные" я выбираю прибор он ВПР мне находит № свидетельства, и потом ввожу дату выполнения. Помощь нужна в следующем, когда я ввожу дату выполнения, то нужно проверить входит ли дата в диапазон в одну из перечисленных поверок. Такие поверки проходят каждый год, то список поверок будет увеличиваться. Я написал следующую формулу =ЕСЛИ(И(C6>СИ!C3;C6<СИ!D3);1;0), но это только для одного диапазона. Можно но ли как то формулой прописать для всех диапазонов???
Как показать скрытые строки по условию
Пользователь
Сообщений: Регистрация: 04.08.2013
26.11.2020 03:06:40
Здравствуйте, нужна помощь. В книге есть форма, вызываешь её, и в поисковой строке, этой формы вводишь нужный текст, который нужно скрыть. И есть в этой форме еще один макрос, он прикручен к кнопке "показать", но он работает отдельно от формы. А теперь, в чем нужна помощь, прикрутить этот макрос к поисковой строке, на форме, чтобы он показал строки содержащие данный текст, и чтобы он искал этот текст по всему листу??? Макросы взял и .,
Как в VBA пройтись и заменить слово
Пользователь
Сообщений: Регистрация: 04.08.2013
24.11.2020 06:13:23
Здравствуйте столкнулся с такой проблемой. Нужно пройтись по всем формам и модулям и заменить слово "Титульник" на "ТИТ". Можно это сделать как-то макросом?
Копирование конкретных ячеек из закрытой книги
Пользователь
Сообщений: Регистрация: 04.08.2013
15.01.2020 15:12:21
Здравствуйте. Нужна Ваша помощь, вообщем я нашел макрос в интернете который копирует данные из закрытой книги, но он получается копирует диапазон, а мне надо, чтобы копировал нужные мне ячейки ("A3","C5","H4", G8"). Вот ссылка на макрос . Я его не много переделал, вот что получилось:
Код
Sub Копировать_ИЗ()
Dim sShName As String, sAddress As String, vData
Dim objCloseBook As Object
'Отключаем обновление экрана
Application.ScreenUpdating = False
Set objCloseBook = GetObject("D:\Сюда.xlsm")
vData = objCloseBook.Sheets("Поиск").Range("A3","C5","H4", "G8").Value
objCloseBook.Close False
If IsArray(vData) Then
Sheets("Лист1").Range("A3","C5","H4", "G8").Resize(UBound(vData, 1), UBound(vData, 2)).Value = vData
Else
Sheets("Поиск").Range("A3","C5","H4", G8") = vData
End If
Application.ScreenUpdating = True
End Sub
Но когда я прописываю в макросе вот так:
Код
.Range("A3","C5")
то он копирует, а когда так:
Код
.Range("A3","C5","H4", "G8")
То выдает ошибку. Где мне прописать нужное количество ячеек, для копирования???