Копирование и вставка строк, соответствующих условию при нажатии кнопки в другой книге

#excel #vba #excel-2003

#excel #vba #excel-2003

Вопрос:

Я не эксперт по VBA, поскольку недавно начал изучать это.

Интересно, возможно ли следующее.

У меня есть несколько книг с тремя рабочими листами (старый, Краткий, Новый).

Условие состоит в том, что все ячейки в столбце D со значением H или M на листе с именем New будут указывать, что вся строка должна быть скопирована на листе с именем Summary в той же книге.

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

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

Я был бы признателен за пример кода с комментариями (чтобы я мог учиться), если это возможно и не слишком сложно.

Пожалуйста, не стесняйтесь задавать какие-либо вопросы, если что-то неясно…

Обновить

Вот макрос, который мне удается создать, просматривая разные коды

 Sub CopyPaste()

Set NewWorkPlan = Sheets("New Workplan")
Set NewExecSummary = Sheets("New Exec Summary")
Dim d
Dim j

d = 1
j = 2

Do Until j = 200

  If NewWorkPlan.Range("D" amp; j) = "M" Or NewWorkPlan.Range("D" amp; j) = "H" Then
    d = d   1
    NewExecSummary.Rows(d).Value = NewWorkPlan.Rows(j).Value

  End If
  j = j   1
 'MsgBox (j)

Loop    

End Sub
 

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

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

Комментарии:

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

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

Ответ №1:

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

Ссылка:

 Set NewExecSummary = Workbooks("TargetWorkbook").Sheets("New Exec Summary")