2015-01-15 4 views
0

Итак, у меня есть файл master excel, который имеет коды для нескольких макросов, например: Sub ExtractDate(), Sub RemoveBlankSpaces() и Sub ReMoveOlderDates().Вызов макроса из другой книги

То, что я пытаюсь сделать, это каждый раз, когда я загружаю новую таблицу Excel с сервера, я хочу иметь возможность применять те же макросы, которые находятся в файле master excel, к файлу, загружаемому с сервера, без для копирования и вставки кодов из файла master excel в новый файл.

Есть ли способ сделать это?

+0

Одним из хороших способов решения этой проблемы является превращение вашего файла master excel в надстройку. Вот запись, которую я сделал по этому поводу в другом сообщении SO: http://stackoverflow.com/questions/23135211/how-to-make-a-reusable-button-from-a-macro –

+0

Привет, спасибо, ответ. Если бы вы могли случайно уточнить, добавлю ли я коды, которые вы разместили на другой ссылке, к моему файлу master excel, в котором есть макросы, которые я хочу использовать? –

ответ

0

Распространенный способ выполнить макрос на любой файл Excel (можно, следовательно, добавить некоторые проверки согласованности правил в ваш код) заключается в следующем:

1) Добавьте код, который вы хотите, чтобы всегда выполнять в ThisWorkbook_Open события основного листа. Вы можете получить доступ к событию из VBE, нажав «Эта книга» в дереве модулей и выбрав событие open. Это идея:

Private Sub ThisWorkbook_Open() 
    ExtractDate 
    RemoveBlankSpaces 
    RemoveOlderDates 
    'etc. 
End Sub 

Не забудьте добавить проверку возможной данных, при желании (например, если имя файла «это», а затем выполнить)

2) Сохраните эту книгу как «.xlam» , укажите имя и местоположение, которое вы предпочитаете (он просто создаст копию, вы не перезапишете оригинальную основную рабочую книгу)

3) Откройте новый файл Excel, затем перейдите в меню Файл/Параметры/Надстройка, следовательно, Browse (мой Excel на французском языке, имена могут быть немного разными, но это логика)

4) В окне просмотра, обратите внимание на файл .xlam и добавить его в список проверяемых надстроек

С этого момента, каждый раз, когда вы будете открывать Excel файл макросов, которые вызываются в ThisWorkbook_Open случае будет выполнен ваш .xlam-файл (сгенерированный из вашей основной книги).

Важное примечание

Если в макросе есть ссылки, такие как «ThisWorkbook.Range("A1")», не забудьте заменить их в мастер-файл с «ActiveWorbook» перед тем, чтобы сохранить его как .xlam, в противном случае вы будете запустите макрос надстройки, а не в текущей открытой книге. Если вы не хотите прикасаться к исходному файлу, вы всегда можете отредактировать этот код в самом надзоре, который будет получать доступ к нему из любого экземпляра Excel в VBE (дерево будет всегда присутствовать, если надстройка активирована).

+0

@JamesCammer, не могли бы вы опубликовать снимок? Это действительно странно. У вас может быть только старый Excel, есть ли у вас «.xla»? –

+0

Это был глупый вопрос, я сам это понял. Большое спасибо Маттео! Ты лучший :) –

+0

@JamesCammer не проблема, не стесняйтесь добавлять источник путаницы, если вы думаете, что это может помочь кому-то другому с вашей же проблемой в будущем! –

Смежные вопросы