Мне нужна помощь, чтобы объединить 2 макроса - PullRequest
0 голосов
/ 02 августа 2010

Мне нужна помощь, чтобы объединить 2 макроса. По сути, после того, как «MACRO1» завершает работу в файле 1 (сам макрос 1 находится в файле 1), я хочу, чтобы Excel запустил «MACRO 2» в файле 2 (сам макрос 2 находится в файле 2). Я пытался использовать следующий код:

Windows("2.xls").Activate
Application.Run "2.xls!Macro2"

Однако вместо запуска в файле 2 он запускается в файле 1, который перезаписывает все исходные данные, которые у меня были в файле 1. (Возвращается к 1.xls, даже если я дал код Windows ("2.xls") .Activate)

Моя цель: После того, как Excel завершил все обновления в файле 1 с помощью макроса 1, я хотел бы, чтобы макрос 2 выполнял команду, которую я вставил в макрос 1 в файле 2. Что я могу сделать, чтобы Excel работал в другом файле вместо одного файла, который я написал коды на? Мне нужен код VBA, который может помочь мне достичь этого. Может кто-нибудь помочь ??

Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 августа 2010

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

Когда вы звоните, это будет выглядеть примерно так:

Macro2("C:\Desktop\Workbook1.xls")
Macro2("C:\Desktop\Workbook2.xls")

Чтобы это работало, ваш макрос должен выглядеть примерно так:

Sub Macro1(TargetBook as Workbook)
    ' Code goes here
End Sub
0 голосов
/ 02 августа 2010

Возможно, я что-то упустил, но я собрал образец (используя Office 2007), и он, похоже, работает для меня. Вот что я сделал:

В 1.xlsm у меня есть следующие два макроса:

Sub Macro1()

    Sheet1.Range("A1").Value = "This is Workbook 1"

End Sub

Sub RunOverwrite()

    Call Application.Run("Macro1")
    Call Application.Run("2.xlsm!Macro2")

End Sub

У меня есть следующий макрос во второй книге под названием 2.xlsm:

Sub Macro2()

    Sheet1.Range("A1").Value = "This is Workbook 2"

End Sub

Когда я выполняю подпрограмму RunOverwrite в первой рабочей книге, она сначала записывает «Это рабочая книга 1» в ячейку A1 первой рабочей книги («1.xlsm»), а затем записывает «Это рабочая книга 2» в ячейку A1 второй рабочей книги ("2.xlsm").

Я что-то упустил из вашего исходного запроса?

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