Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Необходим макрос, копирующий ячейки с данными в др. документ - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Необходим макрос, копирующий ячейки с данными в др. документ (Макросы/Sub)
Необходим макрос, копирующий ячейки с данными в др. документ
NikolayZver Дата: Четверг, 11.02.2016, 14:09 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Доброго времени суток.

Подскажите пожалуйста код макроса со следующим функционалом:

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

На словах макрос я бы описал так:

Открываем документ "База" вкладка "Лист1" копируем значение ячейки С15, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле F19.
Далее
Открываем документ "База" вкладка "Лист1" копируем значение ячейки С18, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле D20.
Далее
Открываем документ "База" вкладка "Лист1" копируем значение ячейки С24, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле L3.
И так далее...

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

В программировании не силён, если можно с кратким объяснением.

Пример приложил. Значения цифровые и текстовые, могут быть одновременно. Должны быть скопированы в неизменном виде (как в примере). Поля Параметр 2, Параметр 3 и т.д. роли не играют. Этим я просто показал что ячейки могут находиться в разных местах.
Да, в примере имена людей совпадают, но в реальности они могут отличаться, потому то я и прошу скрипт с указанием с какой в какую ячейку копировать данные. Положение в списке как правило не меняется.
К сообщению приложен файл: 6367374.xls (25.0 Kb) · 6116249.xls (24.5 Kb)


Сообщение отредактировал NikolayZver - Четверг, 11.02.2016, 15:08
 
Ответить
СообщениеДоброго времени суток.

Подскажите пожалуйста код макроса со следующим функционалом:

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

На словах макрос я бы описал так:

Открываем документ "База" вкладка "Лист1" копируем значение ячейки С15, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле F19.
Далее
Открываем документ "База" вкладка "Лист1" копируем значение ячейки С18, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле D20.
Далее
Открываем документ "База" вкладка "Лист1" копируем значение ячейки С24, после чего вставляем её в документ "Отчёт" вкладка "Данные" в поле L3.
И так далее...

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

В программировании не силён, если можно с кратким объяснением.

Пример приложил. Значения цифровые и текстовые, могут быть одновременно. Должны быть скопированы в неизменном виде (как в примере). Поля Параметр 2, Параметр 3 и т.д. роли не играют. Этим я просто показал что ячейки могут находиться в разных местах.
Да, в примере имена людей совпадают, но в реальности они могут отличаться, потому то я и прошу скрипт с указанием с какой в какую ячейку копировать данные. Положение в списке как правило не меняется.

Автор - NikolayZver
Дата добавления - 11.02.2016 в 14:09
Karataev Дата: Четверг, 11.02.2016, 20:50 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
В макросе есть комментарий, посмотрите его перед запуском макроса.
Макрос запускается из F2. Макрос извлекает данные только для Вовы (в базе это строка 2).
К сообщению приложен файл: 8675108.xls (34.0 Kb)
 
Ответить
СообщениеВ макросе есть комментарий, посмотрите его перед запуском макроса.
Макрос запускается из F2. Макрос извлекает данные только для Вовы (в базе это строка 2).

Автор - Karataev
Дата добавления - 11.02.2016 в 20:50
StoTisteg Дата: Суббота, 13.02.2016, 00:55 | Сообщение № 3
Группа: Авторы
Ранг: Старожил
Сообщений: 1161
Репутация: 103 ±
Замечаний: 0% ±

Excel 2010
Пока непонятно, что такое Параметр и откуда он берётся...


Интуитивно понятный код - это когда интуитивно понятно, что это код.
 
Ответить
СообщениеПока непонятно, что такое Параметр и откуда он берётся...

Автор - StoTisteg
Дата добавления - 13.02.2016 в 00:55
NikolayZver Дата: Суббота, 13.02.2016, 20:57 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 13
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
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

End Sub
[/vba]

Автор - NikolayZver
Дата добавления - 13.02.2016 в 20:57
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Необходим макрос, копирующий ячейки с данными в др. документ (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!