Подскажите пожалуйста код макроса со следующим функционалом:
Есть несколько документов. Первый документ - база со всеми данными, а остальные - документы в которых нужно скопировать некоторые данные из базы.
На словах макрос я бы описал так:
Открываем документ "База" вкладка "Лист1" копируем значение ячейки С15, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле F19. Далее Открываем документ "База" вкладка "Лист1" копируем значение ячейки С18, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле D20. Далее Открываем документ "База" вкладка "Лист1" копируем значение ячейки С24, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле L3. И так далее...
Да, необходимо копировать только значение (стиль и т.д. не нужно) И если например в базе какая то ячейка стала пустой, то на пустоту необходимо заменить значение, что было прописано ранее в остальных документах.
В программировании не силён, если можно с кратким объяснением.
Пример приложил. Значения цифровые и текстовые, могут быть одновременно. Должны быть скопированы в неизменном виде (как в примере). Поля Параметр 2, Параметр 3 и т.д. роли не играют. Этим я просто показал что ячейки могут находиться в разных местах. Да, в примере имена людей совпадают, но в реальности они могут отличаться, потому то я и прошу скрипт с указанием с какой в какую ячейку копировать данные. Положение в списке как правило не меняется.
Доброго времени суток.
Подскажите пожалуйста код макроса со следующим функционалом:
Есть несколько документов. Первый документ - база со всеми данными, а остальные - документы в которых нужно скопировать некоторые данные из базы.
На словах макрос я бы описал так:
Открываем документ "База" вкладка "Лист1" копируем значение ячейки С15, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле F19. Далее Открываем документ "База" вкладка "Лист1" копируем значение ячейки С18, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле D20. Далее Открываем документ "База" вкладка "Лист1" копируем значение ячейки С24, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле L3. И так далее...
Да, необходимо копировать только значение (стиль и т.д. не нужно) И если например в базе какая то ячейка стала пустой, то на пустоту необходимо заменить значение, что было прописано ранее в остальных документах.
В программировании не силён, если можно с кратким объяснением.
Пример приложил. Значения цифровые и текстовые, могут быть одновременно. Должны быть скопированы в неизменном виде (как в примере). Поля Параметр 2, Параметр 3 и т.д. роли не играют. Этим я просто показал что ячейки могут находиться в разных местах. Да, в примере имена людей совпадают, но в реальности они могут отличаться, потому то я и прошу скрипт с указанием с какой в какую ячейку копировать данные. Положение в списке как правило не меняется.NikolayZver
В макросе есть комментарий, посмотрите его перед запуском макроса. Макрос запускается из F2. Макрос извлекает данные только для Вовы (в базе это строка 2).
В макросе есть комментарий, посмотрите его перед запуском макроса. Макрос запускается из F2. Макрос извлекает данные только для Вовы (в базе это строка 2).Karataev
Karataev Большое спасибо! Отличный скрипт! Если можно, ещё небольшой вопрос. Я тут подумал, наверное в некоторых случаях необходимо при копировании параметров резать буквы и оставить только цифры и точки (например 20.10н -> 20.10).
Что необходимо вставить в скрипт?
[vba]
Код
Sub TestMacros()
Dim shAct As Worksheet, shSrc As Worksheet, strFilename As String
'Сюда запишите путь и имя базы. strFilename = "C:\Base1.xls" Set shAct = ActiveSheet Application.ScreenUpdating = False Set shSrc = Workbooks.Open(Filename:=strFilename).Worksheets(1) 'вставляем берём значение из базы shAct.Range("A17").Value = shSrc.Range("D88").Value shAct.Range("F35").Value = shSrc.Range("D82").Value shAct.Range("F30").Value = shSrc.Range("D96").Value shSrc.Parent.Close SaveChanges:=False Application.ScreenUpdating = True 'Сюда запишите путь и имя базы. strFilename = "C:\Base2.xls" Set shAct = ActiveSheet Application.ScreenUpdating = False Set shSrc = Workbooks.Open(Filename:=strFilename).Worksheets(1) 'вставляем берём значение из базы shAct.Range("A17").Value = shSrc.Range("D8").Value shAct.Range("A10").Value = shSrc.Range("F99").Value shSrc.Parent.Close SaveChanges:=False Application.ScreenUpdating = True MsgBox "Готово.", vbInformation
End Sub
[/vba]
Karataev Большое спасибо! Отличный скрипт! Если можно, ещё небольшой вопрос. Я тут подумал, наверное в некоторых случаях необходимо при копировании параметров резать буквы и оставить только цифры и точки (например 20.10н -> 20.10).
Что необходимо вставить в скрипт?
[vba]
Код
Sub TestMacros()
Dim shAct As Worksheet, shSrc As Worksheet, strFilename As String
'Сюда запишите путь и имя базы. strFilename = "C:\Base1.xls" Set shAct = ActiveSheet Application.ScreenUpdating = False Set shSrc = Workbooks.Open(Filename:=strFilename).Worksheets(1) 'вставляем берём значение из базы shAct.Range("A17").Value = shSrc.Range("D88").Value shAct.Range("F35").Value = shSrc.Range("D82").Value shAct.Range("F30").Value = shSrc.Range("D96").Value shSrc.Parent.Close SaveChanges:=False Application.ScreenUpdating = True 'Сюда запишите путь и имя базы. strFilename = "C:\Base2.xls" Set shAct = ActiveSheet Application.ScreenUpdating = False Set shSrc = Workbooks.Open(Filename:=strFilename).Worksheets(1) 'вставляем берём значение из базы shAct.Range("A17").Value = shSrc.Range("D8").Value shAct.Range("A10").Value = shSrc.Range("F99").Value shSrc.Parent.Close SaveChanges:=False Application.ScreenUpdating = True MsgBox "Готово.", vbInformation