Если Вы не сильны в программировании, но, при этом, Вам необходимо реализовать какую-либо задачу, выходящую за рамки стандартных функций и команд MS Excel, можно поискать решение в интернете. Решение, скорее всего, найдется в виде VBA кода, который необходимо скопировать и вставить в Вашу рабочую книгу, потом каким-то образом заставить этот код работать на Вас, в этой статье я расскажу, как это сделать.

Файлы для скачивания:
ФайлОписаниеРазмер файла:Скачивания
Скачать этот файл (P_Macros_01.zip)Пример 14 Кб3110

Рассмотрим два примера:

Ищем и используем команду
Ищем и используем функцию

1. Ищем и используем команду

Например, нам необходима команда, которая бы вставляла в выделенные ячейки цифру "1". Запускаем поисковик, набираем поисковую фразу, получаем результаты, начинаем просматривать, находим код примерно в таком виде:

Sub Вставка1()
    Dim q As Object
    On Error Resume Next
    Set q = Cells
    For Each q In Selection
        q = 1
    Next q
End Sub

Выделяем данный код (без нумерации строк, начиная со слова Sub) и нажимаем Ctrl+C. Переходим в свою рабочую книгу MS Excel и нажимаем сочетание клавиш Alt+F11, у вас откроется окно редактора VBA:

Как вставить готовый макрос в рабочую книгу?

В левом окне "Project - VBA Project" выбираем (щелкаем мышкой) нашу рабочую книгу, в которую необходимо вставить макрос, например, "VBAProject (Книга2)":

Я не вижу окна "Project - VBA Project".

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_5.png

В пункте меню "Insert" выбираем "Module":

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_2.png

В левом окне "Project - VBA Project" у вас должна появиться новая папка "Modules" и в ней новый объект "Module1":

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_3.png

Переходим курсором в правое "Большое" поле для ввода и нажимаем Ctrl+V, скопированный макрос вставиться в модуль:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_4.png

У меня в коде "????????"

После чего закрываем редактор VBA и возвращаемся в рабочую книгу.

Если вы работаете в MS Excel 2007, 2010 или 2013, вам необходимо будет сохранить вашу рабочую книгу как "Книга Excel с поддержкой макросов (.xlsm)":

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_16.png

В MS Excel 2003 достаточно будет просто сохранить файл.

Чтобы выполнить скопированный в книгу макрос выделяем ячейки, в которые необходимо вставить "1", нажимаем в меню "Вид" кнопку "Макросы" и в выпавшем списке выбираем пункт "Макросы" или нажимаем сочетание клавиш Alt+F8:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_8.png

Откроется диалоговое окно "Макрос", в списке макросов выбираем свой и нажимаем кнопку "Выполнить":

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_9.png

Макрос выполнится - в выделенные ячейки вставиться "1":

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_20.png

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

Макросы в MS Excel можно вставлять в следующие места:

  • В Модуль, обычно вставляют код макросов, запуск которых будет производится по нажатию кнопки пользователем (как, например, в нашем случае) или код функций (формул);
  • В Рабочий лист, обычно вставляют код макросов, запуск которых должен происходить автоматически в зависимости от действий пользователя или изменения данных в листе (поменялись данный, макрос выполнился);
  • В Рабочую книгу, обычно вставляют код макросов, запуск которых должен происходить автоматически в зависимости от действий, производимых над книгой (файлом). Например, макрос, который запускается при открытии или закрытии книги, или при ее сохранении;
  • Так же макросы могут быть частью пользовательской формы.

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

Чтобы вставить код в Рабочий лист, в левом окне редактора VBA выберите соответствующий лист, щелкните по нему два раза левой кнопкой мышки, переместите курсор в правое поле ввода и вставьте код.

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_10.png

Для вставки кода в Книгу, выберите "ЭтаКнига":

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_17.png

Давайте потренируемся. Вставьте код опубликованный ниже в "Лист1".

Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo a
    If Target = 2 Then
        VBA.MsgBox ("Ячейка " & Target.Address & " = 2")
    End If
a:
    Exit Sub
End Sub

Данный макрос выводит информационное сообщение если вы введете в любую ячейку листа "2".

Вернитесь в рабочую книгу, перейдите в "Лист1" и введите в ячейку "А1" цифру "2" и нажмите Enter, после чего у вас должно появиться следующее сообщение:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_11.png

Если вы видите это сообщение, то вы все сделали правильно. Если нет, то вы вставили код куда-то не туда, повторите попытку.

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

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_21.png

2. Ищем и используем функцию

Находим в интернете VBA код функции, которая подсчитывает, например, количество слов в ячейке:

Public Function КолСловВЯчейке(Ячейка As Range)
    Dim q As Variant
    Application.Volatile
    q = VBA.Split(Application.WorksheetFunction.Trim(Ячейка.Value), " ")
    КолСловВЯчейке = UBound(q) + 1
End Function

Копируем код, нажимаем сочетание клавиш Alt+F11, откроется редактор VBA:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_22.png

Добавляем новый модуль в свою книгу и в этот модуль вставляем скопированный код:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_23.png

Закрываем редактор VBA и переходим в свою рабочую книгу. Создаем новый лист (необязательно) в ячейку A1 вводим текст "мама мыла раму". Встаем в ячейку, в которой хотим получить результат (количество слов), в меню "Формулы" нажимаем кнопку "Вставить функцию":

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_12.png

В открывшемся окне "Вставка функции" в поле "Категория" выбираем "Определенные пользователем"

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_13.png

В списке доступных функций выбираем "КолСловВЯчейке", нажимаем "ОК":

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_14.png

Вводим необходимые аргументы и нажимаем "ОК":

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_15.png

Получаем результат:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_24.png

Важно:

Если вы не сохраните книгу, в которую вставили макрос как "Книгу с поддержкой макросов", все модули с макросами удаляться и вам придется, потом, повторно проделывать всю эту работу.

Если при вставке макроса в модуль у вас вместо некоторого текста стоят красные знаки "????????"

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_6.png

Это значит, что у вас проблема с кодировкой, которая наблюдается с копированием Кириллического текста из некоторых браузеров. Чтобы победить эту проблему, попробуйте вставить скопированный код в пустой лист MS Excel, как "Текст в кодировке Unicode". Для этого перейдите в книгу MS Excel, выберите или создайте пустой лист, встаньте в ячейку "A1" и нажмите сочетания клавиш Ctrl+Alt+V. Должно будет появиться меню "Специальной вставки", выберите пункт "Текст в кодировке Unicode" и нажмите "OK".

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_7.png

Код должен будет вставиться в рабочий лист без знаков вопроса:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_18.png

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

Если вы не видите в редакторе VBA окна "Project - VBA Project", перейдите во вкладку меню "View" и в списке выберите пункт "Project Explorer" или нажмите сочетание клавиш Ctrl+R:

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu_19.png

Добавить комментарий

Комментарии  

# Дмитрий Г 30.08.2022 08:20
Спасибо огромное! Все четко и по существу изложено!
Ответить | Ответить с цитатой | Цитировать
# Влад537 19.02.2019 02:50
В книге готовых макросов я нашел "Копирование столбцов на другой лист". Как сделать, чтобы при переходе из одной ячейки листа (назовем его копия) в другую копирование выполнялось с учетом изменения диапазона (постоянной длины) копируемых ячеек в листе (оригинал)? Спасибо.
Ответить | Ответить с цитатой | Цитировать
# Хвостов Сергей 19.02.2019 11:19
Киньте мне пример на почту с описанием, разберемся. Почта тут: https://e-xcel.ru/index.php/kontakty
Ответить | Ответить с цитатой | Цитировать
# Викуля 17.09.2018 12:51
Подскажите, пожалуйста, а можно как то создать файл с макросами чтобы он потом открывался и пересчитывался на любом другом компьютере. Есть рабочий документ с макросами, но он работает только на одном компьютере.
Ответить | Ответить с цитатой | Цитировать
# Хвостов Сергей 17.09.2018 13:54
Можно, киньте мне на почту. Я посмотрю почему не работает на других компьютерах.
Ответить | Ответить с цитатой | Цитировать
# Ольга Владимировна 20.02.2018 11:21
Подскажите, как закрепить формулу в макросе?
Есть раскрывающийся список с номером, за каждым номером закреплен свой список рабо.
Делаю через Формула-Диспече р имен-Выбираю нужную ячейку и присваиваю работы. Но затем формула сбивается и последняя у всех. Как исправить ситуацию?
Ответить | Ответить с цитатой | Цитировать
# Хвостов Сергей 20.02.2018 11:34
Ольга, киньте мне файл на почту - разберемся. Почту можно найти тут: https://www.e-xcel.ru/index.php/kontakty
Ответить | Ответить с цитатой | Цитировать
# Наталия 28.11.2014 23:30
Спасибо! Вот этих элементарных действий и не хватало.О них никто обычно не упоминает.
Ответить | Ответить с цитатой | Цитировать
# Наталия 28.11.2014 15:54
Подскажите, куда надо вставить текст готового макроса, чтобы он был доступен при открытии других/новых файлов Excel, а не только в рабочей на данной момент книге.
Ответить | Ответить с цитатой | Цитировать
# Сергей Хвостов 28.11.2014 19:41
Наталья, чтобы макрос был доступен в других файлах, надо сохранить его в личную книгу макросов.
Чтобы ее создать надо нажать кнопку запись макроса, откроется окно в котором задается имя макроса, там есть выпадающий список "Сохранить в:" - выбираем там "Личная книга макросов", жмем ОК и сразу останавливаем запись.
Переходим в редактор VBA и видим, что в списке файлов появился файл с названием "Personal.XLSB".
Создаем в этой книге новый модуль и копируем туда необходимый макрос. Теперь эта книга будет запускаться каждый раз при старте Excel и все макросы из нее будут доступны в любом файле.
Ответить | Ответить с цитатой | Цитировать
# Надежда 06.11.2014 09:23
спасибо вам за этот урок. У меня завтра собеседование, надеюсь это поможет.
Ответить | Ответить с цитатой | Цитировать
# Сергей Хвостов 06.11.2014 10:33
Всегда пожалуйста!
Ответить | Ответить с цитатой | Цитировать