2017-01-26 3 views
0

Ситуация:ISO Как программировать кнопку ActiveX в Workbook 1 для запуска макросов в Workbook 2?

У меня есть две книги:

  • Workbook # 1: загруженная набор данных из хранилища данных в онлайновом режиме
  • Workbook # 2: Мастер коллекция макрокоманд

I создали набор макросов для форматирования набора данных после того, как он был загружен из онлайн-репозитория. Этот набор данных может сильно отличаться в зависимости от особенностей, которые пользователи выбрали перед загрузкой данных. Созданные мной макросы охватывают все возможные сценарии. Таким образом, при открытии диалогового окна «Просмотр макросов» подавляющее количество выбирается. Даже с эффективными соглашениями об именах слишком много, чтобы просеять мою аудиторию, у которой средний уровень опыта с Excel.

Чтобы упростить свой опыт, я хотел выровнять игровое поле, просто предоставив кнопку «Перейти» после выбора из раскрывающегося списка ActiveX.

Я успешно создал раскрывающийся список, заполнил список, и после активации кнопки «Перейти» выбор запускает конкретный макрос для запуска.

МОЯ ПРОБЛЕМА:

мне нужно субкод на кнопку "Go" в Workbook # 2, чтобы заставить макрос работать в Workbook # 1.

Благодарим вас за всю вашу помощь!

+0

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

+0

Тейлин, я знаю, что это возможно. Я не сомневался в этом. Мне нужен реальный код для игры или альтернативные методы, которые были бы более эффективными. Я уверен, что есть методы, которые я не рассматривал. –

+0

TO CLARIFY: Большинство обучающих программ, которые я нашел онлайн, объясняют, как запускать макросы, сохраненные в неактивной книге в текущей книге. ЧТО НЕ ЧТО Я НУЖДАЮ. Мне нужно знать, как активировать макрос из рабочей книги № 1 (активная книга), но это работает в книге № 2 (неактивная рабочая книга). Как выключатель света в доме, подключенный к вторичному дому. –

ответ

0

Вы можете взять реплики с магнитофона.

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

Sub Macro2() 
Dim mlib As Workbook 
Dim wb As Workbook 

Dim ms As Worksheet 
Dim ws As Worksheet 


Set mlib = ActiveWorkbook ' the file with the macros 
Set ms = mlib.Worksheets("Sheet1") 

' write into the macro workbook 
ms.Range("B3").FormulaR1C1 = "asdf" 

'activate another workbook that is already open and is called somefile.xlsx 
Windows("somefile.xlsx").Activate 

' set variables to reference that workbook 
Set wb = ActiveWorkbook 
Set ws = wb.Worksheets("Sheet1") 

' write something into somefile.xlsx 
ws.Range("B1").FormulaR1C1 = "copy me" 

'copy something within somefile.xlsx 
ws.Range("B1").Copy ws.Range("B2") 

' copy something from the macro workbook to the somefile workbook 
ms.Range("A1").Copy ws.Range("A5") 

' activate the macro workbook 

mlib.Activate 


End Sub 

Я попросил несколько примеров кода, так что я мог бы объяснить вашего контекста.

Существует около десятка различных способов, как вы можете идентифицировать «другой» файл вместо жесткого кодирования его в макрос. Если вы могли бы беспокоиться о предоставлении немного дополнительной информации, эту небольшую деталь можно было бы позаботиться.

+0

Спасибо! Я попробую. Я построил первую фазу, которая работает ... но я постараюсь сделать это как фазу 2 и посмотреть, дает ли она мне лучший контроль. –