Vba excel разделить макрос
Личная (персональная) книга макросов – это скрытая служебная книга Excel с именем PERSONAL.XLSB, предназначенная для записи и хранения программного кода (функций и подпрограмм) и предоставления доступа к нему из всех открытых рабочих книг.
Личная книга макросов автоматически открывается в фоновом режиме сразу после загрузки программы Excel и закрывается вместе с приложением, что обеспечивает постоянный доступ из других открытых книг к записанным в ней процедурам.
Персональная книга макросов является скрытой, поэтому добавлять, удалять и изменять размещенные в ней процедуры можно только в редакторе VBA.
Так же, как и в других рабочих книгах, в Личной книге макросов можно создавать программные модули, импортировать и экспортировать их, записывать в модули пользовательские процедуры (подпрограммы и функции) или копировать и вставлять их из модулей других книг.
Подпрограммы, размещенные в Личной книге макросов, можно просмотреть в окне «Список макросов», открыв его из любой рабочей книги Excel. Они будут перечислены с приставкой «PERSONAL.XLSB!». Функции в этом окне не отображаются.
Пользовательские функции, размещенные в Личной книге макросов, доступны для просмотра, выбора и вставки их в ячейки рабочего листа в Мастере функций:
Список пользовательских функций в Личной книге макросов
По умолчанию пользовательские функции расположены в категории «Определенные пользователем». Они выбираются и вставляются в ячейки рабочего листа с помощью Мастера функций так же, как и все остальные.
Пользовательские функции, расположенные в обычной рабочей книге Excel, тоже будут доступны в Мастере функций, но для этого книга должна быть открыта.
Вызов процедуры из Личной книги макросов осуществляется так же, как и запуск процедуры из любой другой рабочей книги.
Создание
Изначально Личная книга макросов в приложении Excel отсутствует. Чтобы проверить, есть ли она в вашей программе (не создал ли ее кто-то ранее), откройте любую рабочую книгу и перейдите в редактор VBA, нажав сочетание клавиш «Alt+F11» (в этом сочетании используется левая клавиша Alt). Открыть редактор VBA можно и пройдя по пунктам меню:
Excel 2007-2016: «Разработчик» –> «Visual Basic» (смотрите, как отобразить вкладку «Разработчик», которая изначально скрыта);
Excel 2000-2003: «Сервис» –> «Макрос» –> «Редактор Visual Basic».
Откроется редактор VBA:
Проводник в редакторе VBA
Если в проводнике сверху вы видите строку «VBAProject (PERSONAL.XLSB)», значит Личная книга макросов на вашем компьютере уже есть.
Если же ее нет, необходимо записать какой-нибудь простенький макрос, выбрав при его создании Сохранить в: Личная книга макросов.
Сохранение макроса в Личной книге макросов
После записи макроса, сохраненного в Личную книгу макросов, эта книга будет создана и появится в проводнике редактора VBA.
Расположение
Место расположения Личной книги макросов на конкретном компьютере, по словам разработчиков, зависит только от версии операционной системы. О его зависимости от версии Excel в их статье ничего не сказано.
В любом случае, книга PERSONAL.XLSB находится в папке XLSTART, которую можно разыскать с помощью поиска в проводнике:
Результаты поиска папки XLSTART в проводнике
Личная книга макросов в папке XLSTART
Удаление
Если вы хотите удалить Личную книгу макросов из своего приложения Excel, найдите с помощью поиска в проводнике папку XLSTART и удалите из нее файл PERSONAL.XLSB.
В принципе, наличие неиспользуемой Персональной книги макросов ничем не мешает. Но если не вы ее создавали и вас беспокоит наличие в ней чужого кода, можете удалить из нее в редакторе VBA все стандартные модули и очистить от процедур модули книги (по умолчанию «ЭтаКнига») и листа (по умолчанию «Лист1»).
Добавление
Как видно из комментариев к этой статье, у некоторых пользователей приложения Excel при создании макроса в выпадающем списке «Сохранить в» отсутствует пункт «Личная книга макросов».
В этом случае можно попытаться найти с помощью поиска в проводнике папку XLSTART и, если она будет найдена, вставить в нее пустой файл PERSONAL.XLSB. В данном случае «пустой» означает «без пользовательских процедур (макросов)».
После добавления файла PERSONAL.XLSB в папку XLSTART и перезагрузки приложения Excel, Личная книга макросов появится в проводнике редактора VBA. Перезагрузка Excel заключается в закрытии всех открытых рабочих книг и последующем открытии любого файла этой программы.
Для автоматизации повторяющихся задач в Microsoft Excel можно быстро записать макрос. Предположим, у вас есть даты в различном формате и вы хотите применить ко всем из них один формат. Это можно сделать с помощью макроса. Вы можете записать макрос, который применяет нужный формат, а затем запускать его при необходимости.
При записи макроса все действия в записи макроса записываются Visual Basic для приложений (VBA) коде. Эти действия могут включать ввод текста или чисел, выбор ячеек или команд на ленте или в меню, форматирование ячеек, строк или столбцов или даже импорт данных из внешнего источника, скажем, Microsoft Access. Visual Basic Приложение (VBA) — это подмножество мощного Visual Basic программирования, которое входит в большинство Office приложений. Хотя VBA позволяет автоматизировать процессы как в приложениях, так и между Office, необязательно знать код VBA или программирование на компьютере, если оно делает то, что вам нужно.
Важно знать, что при записи макроса регистрируются почти все ваши действия. Поэтому если вы допустите ошибку, например нажмете не ту кнопку, средство записи макросов зарегистрирует это действие. В таком случае можно снова записать всю последовательность или изменить код VBA. Поэтому перед записью процесса следует хорошо проработать его. Чем точнее вы запишете последовательность, тем более эффективно будет работать макрос.
Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее. Дополнительные сведения см. в статье Отображение вкладки "Разработчик".
Запись макроса
Перед записью макросов полезно знать следующее:
Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.
Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.
В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.
Чтобы записать макрос, следуйте инструкциям ниже.
На вкладке Разработчик в группе Код нажмите кнопку Запись макроса.
Нажмите ALT+T+M+R.
В поле Имя макроса введите название макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.
Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш с CTRL+SHIFT, так как они будут заменять собой совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос. Например, если назначить сочетание клавиш CTRL+Z (Отменить), вы не сможете использовать его для функции "Отменить" в данном экземпляре Excel.
В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.
Как правило, макрос сохраняется в расположении Эта книга, но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите Личная книга макроса . При выборе личнойкниги макроса Excel создает скрытую личную книгу макроса (Personal.xlsб), если она еще не существует, и сохраняет макрос в этой книге.
В поле Описание при необходимости введите краткое описание действий макроса.
Хотя поле "Описание" является необязательным, рекомендуется его заполнить. Кроме того, желательно ввести понятное описание, которое будет полезно вам и всем, кто запускает макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.
Чтобы начать запись макроса, нажмите кнопку ОК.
Выполните действия, которые нужно записать.
На вкладке Разработчик в группе Код нажмите кнопку Остановить запись .
Нажмите ALT+T+M+R.
Работа с макросами, записанными в Excel
На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. Кроме того, можно нажать клавиши ALT+F8. При этом откроется диалоговое окно Макрос.
Внимание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.
Ниже приведены дополнительные сведения о работе с макросами в Excel.
Сведения о параметрах безопасности макросов и их значении.
Макросы можно запускать различными способами, например с помощью сочетания клавиш, графического объекта, панели быстрого доступа, кнопки или даже при открытии книги.
С помощью редактора Visual Basic можно изменять макросы, присоединенные к книге.
Если книга содержит макрос VBA, который нужно использовать где-либо еще, этот модуль можно скопировать в другую книгу с помощью редактора Microsoft Visual Basic.
Назначение макроса объекту, фигуре или графическому элементу
Щелкните правой кнопкой мыши объект, рисунок, фигуру или элемент, которому вы хотите назначить существующий макрос, и выберите пункт Назначить макрос.
В поле Назначить макроса выберите макрос, который вы хотите назначить.
Вы можете назначить макрос значку и добавить его на панель быстрого доступа или ленту.
Вы можете назначать макросы формам и элементам ActiveX на листе.
Узнайте, как включать и отключать макросы в файлах Office.
Открытие редактора Visual Basic
Нажмите клавиши ALT+F11.
Узнайте, как найти справку по элементам Visual Basic.
Работа с записанным кодом в редакторе Visual Basic (VBE)
С помощью редактора Visual Basic (VBE) вы можете добавлять в записанный код собственные переменные, управляющие структуры и другие элементы, которые не поддерживает средство записи макросов. Так как средство записи макросов фиксирует почти каждый шаг, выполняемый во время записи, может также потребоваться удалить ненужный код. Просмотр записанного кода — отличный способ научиться программировать на VBA или отточить свои навыки.
Пример изменения записанного кода можно найти в статье Начало работы с VBA в Excel.
Запись макроса
Перед записью макросов полезно знать следующее:
Макрос, записанный для работы с диапазоном Excel, будет выполняться только для ячеек этого диапазона. Поэтому если вы добавите в диапазон новую строку, макрос не будет применяться к ней.
Если вам нужно записать длинную последовательность задач, советуем вместо этого использовать несколько более мелких макросов.
В макросе могут содержаться и задачи, не относящиеся к Excel. Процесс макроса может охватывать прочие приложения Office и другие программы, которые поддерживают Visual Basic для приложений (VBA). Например, вы можете записать макрос, который сначала обновляет таблицу в Excel, а затем открывает Outlook для ее отправки по электронной почте.
Макросы и средства VBA находятся на вкладке Разработчик, которая по умолчанию скрыта, поэтому сначала нужно включить ее.
Перейдите в Excel > параметры. > ленты & панель инструментов.
В категории Настроить ленту в списке Основные вкладки установите флажок Разработчик, а затем нажмите кнопку Сохранить.
Чтобы записать макрос, следуйте инструкциям ниже.
На вкладке Разработчик нажмите кнопку Запись макроса.
В поле Имя макроса введите название макроса. Сделайте имя понятным, чтобы можно было быстро найти нужный макрос.
В списке Сохранить в выберите книгу, в которой вы хотите сохранить макрос.
Как правило, макрос сохраняется в расположении Эта книга, но если вы хотите, чтобы макрос был доступен при использовании Excel, выберите Личная книга макроса. При выборе личнойкниги макроса Excel создает скрытую личную книгу макроса (PERSONAL.XLSB), если она еще не существует, и сохраняет макрос в этой книге. Книги в этой папке открываются автоматически при Excel, и любой код, сохраненный в личной книге макроса, будет указан в диалоговом окну Макрос, которое объясняется в следующем разделе.
Чтобы назначить сочетание клавиш для запуска макроса, в поле Сочетание клавиш введите любую строчную или прописную букву. Рекомендуется использовать сочетания клавиш, которые еще не назначены другим командам, так как они будут переопределять совпадающие с ними стандартные сочетания клавиш в Excel, пока открыта книга, содержащая макрос.
В поле Описание при необходимости введите краткое описание действий макроса.
Хотя поле "Описание" является необязательным, рекомендуется его заполнить. Полезно ввести содержательное описание со всеми сведениями, которые могут быть полезны вам или другим пользователям, которые будут запускать макрос. Если у вас много макросов, описания помогут быстро определить, для чего они нужны.
Чтобы начать запись макроса, нажмите кнопку ОК.
Выполните действия, которые нужно записать.
На вкладке Разработчик щелкните Остановить запись.
Работа с макросами, записанными в Excel
На вкладке Разработчик щелкните Макросы, чтобы просмотреть макросы, связанные с книгой. При этом откроется диалоговое окно Макрос.
Примечание: Макросы нельзя отменить. Прежде чем впервые запускать записанный макрос, сохраните книгу или создайте ее копию, чтобы предотвратить внесение нежелательных изменений. Если вас не устраивают результаты выполнения макроса, вы можете закрыть книгу, не сохраняя ее.
Ниже приведены дополнительные сведения о работе с макросами в Excel.
Узнайте, как включать и отключать макросы в Excel для Mac.
Если книга содержит макрос VBA, который нужно использовать где-либо еще, этот модуль можно скопировать в другую книгу с помощью редактора Microsoft Visual Basic.
Назначение макроса объекту, фигуре или графическому элементу
Щелкните правой кнопкой мыши объект, рисунок, фигуру или элемент, которому вы хотите назначить существующий макрос, и выберите пункт Назначить макрос.
В поле Назначить макроса выберите макрос, который вы хотите назначить.
Вы можете назначить макрос значку и добавить его на панель быстрого доступа или ленту.
Вы можете назначать макросы формам и элементам ActiveX на листе.
Открытие редактора Visual Basic
На вкладке Разработчик щелкните Visual Basic или выберите Сервис > Макрос > Редактор Visual Basic.
Узнайте, как найти справку по элементам Visual Basic.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Возвращает одномерный массив с основанием 0, содержащий указанное число подстрок.
Синтаксис
Split(expression, [ delimiter, [ limit, [ compare ]]])
Синтаксис функции Split включает следующие именованные аргументы:
Часть | Описание |
---|---|
выражение | Обязательная часть. Строковое выражение, содержащее подстроки и разделители. Если аргумент expression является строкой нулевой длины (""), функция Split возвращает пустой массив — без элементов и данных. |
delimiter | Необязательное свойство. Строковый символ, используемый для разделения подстрок. Если этот аргумент не указан, в качестве разделителя используется знак пробела (" "). Если аргумент delimiter является строкой нулевой длины, возвращается массив с одним элементом, содержащим всю строку из аргумента expression. |
ограничение | Необязательное свойство. Количество возвращаемого подстройки; -1 указывает, что возвращаются все подстройки. |
compare | Необязательно. Представляет собой числовое значение, указывающее вид сравнения, которое выполняется при оценке подстрок. Значения см. в разделе "Параметры". |
Параметры
Аргумент compare может принимать следующие значения:
Константа | Значение | Описание |
---|---|---|
vbUseCompareOption | –1 | Выполняет сравнение, используя параметр оператора Option Compare. |
vbBinaryCompare | 0 | Выполняется двоичное сравнение. |
vbTextCompare | 1 | Выполняется текстовое сравнение. |
vbDatabaseCompare | 2 | Только Microsoft Access. Выполняется сравнение на основе сведений из базы данных. |
Пример
В этом примере показано, как использовать функцию Split .
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Дорогие мои, хорошие, помогите!)
Я уж намучилась)
Можно как-то сформулировать код, чтобы таблица раздербанилась на несколько файлов (с опр.названием) и с опр. условием?
В примере на основании 2 столбца таблица пилится на разные листы (а нужно в файлы) с соотв.названием (из 2 столбца).
Шапка таблицы также копируется.
В идеале нужно, чтобы вставлялось не в новосозданный файл, а файл-болванку с уже забитыми формулами (см. лист "Болванка", т.к. там уже есть суммирующая таблица со статистикой).
В оригинальной таблице более 10 тыс.строк, условие в столбце может принимать 70+ значений!
Рыцари Excel, не оставьте даму в опасности утомительнейшего ручного труда!))
Разделение файла на несколько частей(макрос)
Ребят кто-нить помогите. Я уже отчаялся не знаю как сделать это "Разделить файл на несколько частей.
Разделение чередующихся строчек в разные файлы
Условие: Файл с исходными данными содержит 2 стихотворения разных авторов (строки чередуются).
Запрос по наименованию, разделение таблицы на несколько запросов (таблиц)
Добрый день форумчане! Прошу помочь и подсказать как можно реализовать следующее: Есть Таблица.
Макрос для разделения таблицы на несколько
Добрый день! Имеется макрос (см.приложение) который разделяет одну большую таблицу по ключевому.
Решение
Bambaleilo, Попробуйте так. Тренироваться, естественно, на кошках (c)
Боже мой, pashulka, спасибо!)
Это какая-то магия!!)
Я вижу, как последовательно выбираются разные значения под фильтром)
Ииии. Я вижу нужные папки и файлы в папках!)))
То, что нужно! Великолепно просто!) Я в полном восторге!))
А в самом коде я поплыла на 5 строке))
(и мне очень понравилась третья! не догадалась раньше, буду пользоваться теперь) за это отдельное спасибо!))
Единственное, что ещё как-то зацепило моё сознание - это слово copy
Спасибо, pashulka, Вы мой спаситель-от-ручного-труда-избавитель!))
Решение
Bambaleilo, Если правильно понял, насчёт шаблона, то пример можно найти в аттаче. В качестве "шаблона" может выступать и самая обычная книга. Но обратите внимание на то, что даже там нет проверки корректности данных, которые мы используем в качестве источника для имени папки и файла. Так что, имеет смысл либо предварительно удалять весь мусор, либо проверять нет ли ошибки после сохранения книги.
Ооооо!)) Оооооо!)))
pashulka, Вы мой герой!)
Сегодня целый день работала с Вашим первым макросом)
Момент, когда я его запустила, мммм! Минута и 15 секунд на 12 тысяч строк! Шикааааарно!))
Я так вдохновилась, что нарисовала себе ещё один файлик-болванку, который бы брал данные из открытого файла (из примерно 200, которые сформировались) и делал то, что я делала обычно вручную (убирал дубликаты по столбцу, вставлял в таблицу, выделял строки на удаление) . Работала с ним сегодня цельный день, сделала 35 файлов даже с учётом двух макросов.
Если раньше по моим подсчётам у меня должно было уйти 14 дней (четырнадцааааать) , то сейчас я рассчитываю ещё примерно на 12 часов)
Боюсь представить, сколько будет, если использовать то, что Вы ещё написали!)) Пойду проверю!))
Спасибо-спасибо-спасибооооо!))
Здравствуйте. Подскажите пожалуйста. Нашёл этот код выше. Все работает, но как изменить код, чтобы делал тоже самое только с тремя листами в одной книги. То есть при разбивки на новые файлы в книге было три листа. Условие одинаковое на все три листа
Макрос для внесения данных из combobox на разные листы в таблицы в зависимости от выбранных значений
Люди добрые, приветствую вас!))) Мне нужна ваша помощь в решении одной проблемки! С макросами.
Webpack. В продакшн дублируются опр. файлы
Здравствуйте. При создании билда в сам корень папки (dist) попадают определенные файлы. Пути.
Разделение отчета на отдельные файлы PDF-файлы
Доброй ночи форумчане! Просьба помочь в решении задачи. Есть простая база, данные в которую.
Разделение одной сети на 2 разные
Сап, киберач, есть одна сеть. Есть ip-телефония через сервер. Интернет заходит через джунипер, к.
Разбить содержимое ячейки на строки
Всем привет! Есть такая задача: необходимо содержимое ячейки транспонировать в столбец. просто.
Разнести текст из ячейки по другим, ориентируясь на разделитель
Доброе время суток! Столкнулся вот с такой проблемой: Есть столбец, в котором содержится инфо.
Разбить текст ячейки (строки), содержащий разделитель, на строки
Необходимо разбить текст в ячейке (с разделителями "Alt+Enter") на отдельные строки
Разбить текст на строки длиной до 300 символов, вывести полученные строки в разные Label
Я с базы данных вывожу текст, нужно сделать так, чтобы текст выводился в lable1 до определенного.
Решение
Спасибо, Vlad999!
. ничего у меня не получилось, т.к. я не программист, а просто пользователь.
макросы для меня - темный лес!
Добавлено через 8 минут
Слушайте, Vlad999, вот я балда , всё получилось - и у Вас и у меня, я просто не заметила, как всё сработало .
Всё работает - спасибо.
А то, я уж собралась делать всё обходными путями - через Word - копируешь в Word, а потом обратно в Excel - и всё разносится по строкам ))))))
Добрый день, Vlad999, подскажите, при запуске макроса выдаёт ошибку
"subscript out of range error 9"
на строке
mas(k, j) = Split(Cells(i, j), Chr(10))(k - 1)
Можете модифицировать код, чтобы результат был, как на скриншоте? (Сверху исходный текст, снизу необходимый результат?)
P.s. количество строк может варьироваться до 20
Может кому пригодится
Необходимый столбец указывается в строке 5 (В данном случае столбец D)
Исходный текст и необходимый результат видны в комментарии
Как получить номер строки ячейки в которую внесена функция макросом этой функции
Здравствуйте, помогите решить следущую проблему, у меня есть следующий макрос (файл прилагается).
Разбить данные из ячейки на строки
Всем доброго дня! Итак, вопрос: Имеется таблица DBGrid, которая выводит данные из базы, лежащей.
Разбить текст на строки
Имеется текст в одну строку, например "машина легковая , мотоцикл ява , спортивный велосипед ".
Разбить текст на строки
Создать процедуру, которая позволяет введенный текст разбить на строки по k символов.
Читайте также: