Auditportal.ru

Аудит Портал
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как запустить несколько макросов с помощью кнопки в Excel?

Как объединить макросы в Excel

Макрос Excel — это специальная программа, написанная на языке VBA, встроенная в программу электронных таблиц. Для выполнения определенных действий в Excel проще создать макрос или найти в Интернете готовый код макроса, который выполняет нужное действие.

Во-вторых, макрос будет присутствовать в виде кода VBA. Обычно спрашивают: как добавить макрос на рабочий лист Excel и как его использовать?

Как включить макросы в Excel

Чтобы иметь возможность использовать макросы в своей работе, их необходимо сначала активировать. Нажмите на кнопку «Файл» в левом верхнем углу и выберите из списка пункт «Параметры».

Работа с макросами в Excel

Перейдите на вкладку «Настройка ленты» в окне «Параметры Excel». В правой части окна установите флажок «Разработчик» и нажмите «ОК».

В верхней части ленты появится новая вкладка «Разработчик». Он содержит все команды, необходимые для работы с макросами.

Теперь разрешим использование всех макросов. Снова откройте «Файл» — «Параметры». Появится вкладка «Центр управления безопасностью». и в правой части окна нажмите на кнопку «Параметры центра управления безопасностью».

Выберите вкладку «Параметры макросов». Перейдите на вкладку «Параметры макросов», выделите «Включить все макросы» и нажмите «ОК». Затем перезапустите Excel: закройте программу, а затем откройте ее снова.

Как вставить макрос в Excel

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

Вставьте макрос в модуль.

Предположим, вам нужно объединить несколько ячеек в одну без потери данных. Как вы знаете, Excel может объединять ячейки, сохраняя данные только из левой верхней ячейки. Мы будем использовать код VBA для сохранения всех данных из объединяемых ячеек.

Откройте редактор VBA: перейдите на вкладку «Разработчик» и нажмите на кнопку «Visual Basic». Также можно использовать комбинацию клавиш «Alt+F11».

В левой части редактора, в окне «Проект» , выберите рабочую книгу с помощью мыши. Рабочая книга — это ваш открытый документ Excel, в который будет помещен макрос. В моем случае она называется «Книга1».

Щелкните правой кнопкой мыши на выбранном элементе и выберите в меню пункт «Вставить». — «Модуль».

В окне «Project» появляется новая папка «Modules», внутри которой находится наш первый модуль с названием «Module1».

Справа появится поле для ввода кода VBA. Используя комбинацию «Ctrl+V», вставьте код, который объединит несколько ячеек без потери данных. Имя макроса — «MergeCell».

Будьте внимательны, куда вы вставляете код, он будет написан в заголовке редактора или в заголовке окна вставки кода. Мы вставляем код в модуль, поэтому он записывается «Modul1(Code)».

Нажмите «Ctrl+S», чтобы сохранить изменения. Если вы используете Excel 2007 или выше, появится окно «Сохранить документ». В нем в поле «Тип файла». Нажмите «Сохранить», выбрав из выпадающего списка «Рабочая книга Excel с макросами».

Вставьте код макроса в электронную таблицу.

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

Откройте редактор VBA и выберите нужный лист в окне «Проект», если их несколько в рабочей книге, на которой будет работать макрос: «Sheet1». Дважды щелкните по нему.

Справа появится окно для ввода кода. Обратите внимание, что мы вставляем код в рабочий лист, поэтому заголовок будет «Sheet1(Code)». Сохраните изменения в документе, как описано выше.

Чтобы вставить код макроса в рабочую книгу, дважды щелкните «Эта рабочая книга» и вставьте код в открывшуюся область.

Создание пользовательских функций

Например, давайте напишем функцию, которая вычисляет НДС. Нажмите «Вставить» — «Модуль» в окне «Проект», чтобы добавить рабочий лист.

В папке «Modules» второй модуль называется «Module2». Нажмите «Ctrl+S» для сохранения VBA-кода в соответствующем окне. Функция будет называться «NDS».

Читайте так же:
Как легко преобразовать несколько единиц энергии в Excel?

Как запустить макросы в Excel

Теперь давайте рассмотрим, как все созданные ранее макросы выполняются в документе Excel.

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

Выберите ячейки, которые нужно объединить, затем перейдите на вкладку «Разработчик» и нажмите кнопку «Макрос».

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

Макрос был выполнен: нужные ячейки были объединены, и в них был записан текст.

Если макрос был вставлен в рабочий лист, он будет запускаться автоматически, в зависимости от действий пользователя. Мой макрос добавляет значения из выпадающего списка в ячейки справа. Я вставил в код диапазон ячеек, в которых находятся выпадающие списки.

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

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

Если вы создали пользовательскую функцию, вы также должны вставить ее в документ как функцию. У меня есть такая функция для расчета НДС.

В качестве простого примера поместим «100» в ячейку A1. Выбираем ячейку, в которую будет записан результат. Затем на вкладке «Формулы» нажимаем «Вставить функции».

Откроется «Мастер функций». В поле «Категория» выберите «Определяемая пользователем» из выпадающего списка. «Выберите функцию», выбрав NDS из списка. Нажмите «OK» .

Затем выделяю ячейку, для которой необходимо рассчитать НДС, и нажимаю «ОК» .

Включение макросов в документ Excel 2010 очень просто. Кажется, что вы поняли, как вставить макрос в Excel и затем выполнить его.

Запуск такого же макроса excel в нескольких файлах excel

У меня есть папка, в которую я ежедневно получаю более 1000 файлов excel, все они имеют одинаковый формат и структуру. Что я хочу сделать, это запустить макрос на все 100 файлов каждый день?

Есть ли способ автоматизировать это? В результате я могу запускать один и тот же макрос каждый день в более чем 1000 файлов.

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

DoWork() в данном примере — это макрос, который применяется ко всем вашим файлам. Убедитесь, что вся макрообработка всегда выполняется в контексте рабочей книги (открытой в данный момент).

Отказ от ответственности: Все возможные варианты обработки ошибок опускаются для краткости.

Часть вопроса может заключаться в том, как я могу запустить это на 1000 файлах. Должен ли я добавить этот макрос во все 1000 книг?

Один из способов сделать это — добавить макрос централизованно в ПЕРСОНАЛ. (Иногда расширение может быть другим). Этот файл будет загружаться в фоновом режиме при каждом запуске Excel и сделает ваш макрос доступным в любое время.

Первоначально НЕ будет существовать файл PERSONAL. XLSB файл. Запустите макрозапись «манекена» (с помощью кнопки записи в левой нижней части таблицы) и выберите «Личная макрокнига» для автоматического сохранения файла.

После написания макроса можно открыть редактор VBA с помощью Alt + F11, и вы увидите файл PERSONAL.XLSB, в котором будет «фиктивный» макрос.

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

Его недостаток заключается в том, что если вы открываете несколько экземпляров Excel, то получаете сообщение об ошибке, в котором говорится, что файл PERSONAL. XLSB файл уже существует в экземпляре Excel №1. Если в данный момент вы не добавляете новый макрос, это не должно быть проблемой.

Читайте так же:
Как извлечь текст между запятыми / скобками / круглыми скобками в Excel?

Огромное спасибо за это

Вместо передачи значений в DoWork можно также выполнять задания в Processfiles() .

Когда я запускаю этот код, я получаю неправильное имя или номер файла. Я сохранил весь файл в папке EXCL

На самом деле, я использовал точно такой же код (process_fiels и dowork), который вы опубликовали для своего макроса.

Он работал блестяще!!! (до моего вопроса).

Мои 1000 книг имеют по 84 страницы. (Наконец) Мой собственный макрос! разбивает каждую книгу на 85 различных файлов (оригинал + сокращенная версия каждого листа сохраняется в отдельном файле).

Теперь у меня 1000 файлов и 1000×85 в одной папке, в которой трудно разобраться.

Мне действительно нужно, чтобы Process_Files брал первый файл, создавал папку с именем first file, перемещал первый файл в папку с именем ist, затем запускал мой макрос (в папке с именем первого файла во вновь созданной папке). ), возьмите второй файл, создайте папку с названием second file, переместите второй файл в папку с названием ist, затем запустите мой макрос (в папке с названием второго файла во вновь созданной папке). ) и так далее.

Чтобы выполнить задачу, мне пришлось переместить все файлы в папки с теми же именами, что и у файлов, поэтому в папке originalFiles будет 1000 папок с именами исходных файлов, содержащих исходные файлы + 84 файла, в которых уже запущен мой собственный макрос.

Это можно упростить с помощью кода :

Sub ProcessFiles() Dim Filename, Pathname As String Dim wb В качестве рабочей книги

(Здесь вы должны прочитать имя файла, создать папку с именем файла, переместить файл в эту вновь созданную папку).

(вернуться к исходным файлам)

Sub DoWork (wb As Workbook) С wb MyMacro Конец с End Sub

Огромное спасибо! Этот сайт потрясающий!

Обратите внимание, что данный макрос был обновлен _____________________________.

Как видите, я не специалист по VBA, но макрос в итоге работает. Код не совсем чистый, я не программист.

Возможно, однажды она пригодится вам.

Sub ProcessFiles_All() Dim Filename, Pathname, NewPath, FileSource, FileDestination As String Dim wb В качестве рабочей книги

На wb. SaveChanges: = False если возникла проблема. Number < > 0, то здесь необходим обработчик ошибок End if

Sub DoWorkPlease (wb As Workbook) С помощью wb

Поскольку в моем приложении более 1800 ячеек на столбец и это занимает много времени, я бы использовал режим «test», если бы играл только с 18 значениями.

‘ускорить макрос, отключить обновление и оповещения
Приложение .ScreenUpdating = False Application.DisplayAlerts = False

Ниже приведен код, который я написал для вычисления значений ячеек на основе чисел (показания датчиков должны быть преобразованы в реальные числа). Код здесь не совсем настоящий.

После этого я копирую его в просто числа, без формул, поскольку так работать легче.

‘_____________________________________ «Получить только значения — больще формул».

‘ Затем я сохраняю эту новую книгу в папке со своим именем (а в папке FILES

‘_____________________________________ ‘Сохраните свою работу в собственной папке.

Dim CleanName, CleanPath, CleanNewName как вариант CleanPath = ActiveWorkbook.Path CleanName = ActiveWorkbook.Name CleanName = Left (CleanName, 34) ‘Я вынимаю расширение CleanPath = CleanPath + «» + CleanName CleanNewName = CleanPath + «» + CleanName CleanNewName = CleanNewName + «_clean.csv», и теперь я добавляю «чистый», чтобы иметь другое имя.

On ActiveWorkbook.SaveAs Имя файла: = CleanNewName, Формат файла: = xlCSV, Создать резервную копию: = False

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

ActiveSheet.Move _ После: = ActiveWorkbook.Sheets(1)

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

Читайте так же:
Как защитить сразу все книги в папке в Excel?

Ниже приведен список отдельных диапазонов, которые мне нужны для каждого файла. Из-за огромного количества файлов на это стоит потратить время.

‘_______________ Сплит!! ______________________________

Dim Col (от 1 до 98) как вариант Col (1) = «A: A, B: B, CH: CH, CN: CN, CT: CT» Col (2) = «A: A, C: C, CH: CH, CN: CN, CT: CT» Col (3) = «A: A, D: D, CH: CH, CN: CN, CT: CT» Col (4) = «A: A, E: E, CH: CH, CN: CN, CT: CT» Col (5) = «A: A, F: F, CH: CH, CN: CN, CT: CT» Col (6) = «A: A, G: G, CH: CH, CN: CN, CT: CT» Col (7) = «A: A, H: H, CH: CH, CN: CN, CT: CT» Col (8) = «A: A, I: I, CH: CH, CN: CN, CT: CT» Col (9) = «A: A, J: J, CH: CH, CN: CN, CT: CT» Col (10) = «A: A, K: K, CH: CH, CN: CN, CT: CT» Col (11) = «A: A, L: L, CH: CH, CN: CN, CT: CT» Col (12) = «A: A, M: M, CH: CH, CN: CN, CT: CT» Col (13) = «A: A, N: N, CH: CH, CN: CN, CT: CT» Col (14) = «A: A, O: O, CH: CH, CN: CN, CT: CT» Col (15) = «A: A, P: P, CI: CI, CO: CO, CT: CT» Col (16) = «A: A, Q: Q, CI: CI, CO: CO, CT: CT» Col (17) = «A: A, R: R, CI: CI, CO: CO, CT: CT» Col (18) = «A: A, S: S, CI: CI, CO: CO, CT: CT» Col (19) = «A: A, T: T, CI: CI, CO: CO, CT: CT» Col (20) = «A: A, U: U, CI: CI, CO: CO, CT: CT» Col (21) = «A: A, V: V, CI: CI, CO: CO, CT: CT» Col (22) = «A: A, W: W, CI: CI, CO: CO, CT: CT» Col (23) = «A: A, X: X, CI: CI, CO: CO, CT: CT» Col (24) = «A: A, Y: Y, CI: CI, CO: CO, CT: CT» Col (25) = «A: A, Z: Z, CI: CI, CO: CO, CT: CT» Col (26) = «A: A, AA: AA, CI: CI, CO: CO, CT: CT» Col (27) = «A: A, AB: AB, CI: CI, CO: CO, CT: CT» Col (28) = «A: A, AC: AC, CI: CI, CO: CO, CT: CT» Col (29) = «A: A, AD: AD, CJ: CJ, CP: CP, CT: CT» Col (30) = «A: A, AE: AE, CJ: CJ, CP: CP, CT: CT» Col (31) = «A: A, AF: AF, CJ: CJ, CP: CP, CT: CT» Col (32) = «A: A, AG: AG, CJ: CJ, CP: CP, CT: CT» Col (33) = «A: A, AH: AH, CJ: CJ, CP: CP, CT: CT» Col (34) = «A: A, AI: AI, CJ: CJ, CP: CP, CT: CT» Col (35) = «A: A, AJ: AJ, CJ: CJ, CP: CP, CT: CT» Col (36) = «A: A, AK: AK, CJ: CJ, CP: CP, CT: CT» Col (37) = «A: A, AL: AL, CJ: CJ, CP: CP, CT: CT» Col (38) = «A: A, AM: AM, CJ: CJ, CP: CP, CT: CT» Col (39) = «A: A, AN: AN, CJ: CJ, CP: CP, CT: CT» Col (40) = «A: A, AO: AO, CJ: CJ, CP: CP, CT: CT» Col (41) = «A: A, AP: AP, CJ: CJ, CP: CP, CT: CT» Col (42) = «A: A, AQ: AQ, CJ: CJ, CP: CP, CT: CT» Col (43) = «A: A, AR: AR, CK: CK, CQ: CQ, CT: CT» Col (44) = «A: A, AS: AS, CK: CK, CQ: CQ, CT: CT» Col (45) = «A: A, AT: AT, CK: CK, CQ: CQ, CT: CT» Col (46) = «A: A, AU: AU, CK: CK, CQ: CQ, CT: CT» Col (47) = «A: A, AV: AV, CK: CK, CQ: CQ, CT: CT» Col (48) = «A: A, AW: AW, CK: CK, CQ: CQ, CT: CT» Col (49) = «A: A, AX: AX, CK: CK, CQ: CQ, CT: CT» Col (50) = «A: A, AY: AY, CK: CK, CQ: CQ, CT: CT» Col (51) = «A: A, AZ: AZ, CK: CK, CQ: CQ, CT: CT» Col (52) = «A: A, BA: BA, CK: CK, CQ: CQ, CT: CT» Col (53) = «A: A, BB: BB, CK: CK, CQ: CQ, CT: CT» Col (54) = «A: A, BC: BC, CK: CK, CQ: CQ, CT: CT» Col (55) = «A: A, BD: BD, CK: CK, CQ: CQ, CT: CT» Col (56) = «A: A, BE: BE, CK: CK, CQ: CQ, CT: CT» Col (57) = «A: A, BF: BF, CL: CL, CR: CR, CT: CT» Col (58) = «A: A, BG: BG, CL: CL, CR: CR, CT: CT» Col (59) = «A: A, BH: BH, CL: CL, CR: CR, CT: CT» Col (60) = «A: A, BI: BI, CL: CL, CR: CR, CT: CT» Col (61) = «A: A, BJ: BJ, CL: CL, CR: CR, CT: CT» Col (62) = «A: A, BK: BK, CL: CL, CR: CR, CT: CT» Col (63) = «A: A, BL: BL, CL: CL, CR: CR, CT: CT» Col (64) = «A: A, BM: BM, CL: CL, CR: CR, CT: CT» Col (65) = «A: A, BN: BN, CL: CL, CR: CR, CT: CT» Col (66) = «A: A, BO: BO, CL: CL, CR: CR, CT: CT» Col (67) = «A: A, BP: BP, CL: CL, CR: CR, CT: CT» Col (68) = «A: A, BQ: BQ, CL: CL, CR: CR, CT: CT» Col (69) = «A: A, BR: BR, CL: CL, CR: CR, CT: CT» Col (70) = «A: A, BS: BS, CL: CL, CR: CR, CT: CT» Col (71) = «A: A, BT: BT, CM: CM, CS: CS, CT: CT» Col (72) = «A: A, BU: BU, CM: CM, CS: CS, CT: CT» Col (73) = «A: A, BV: BV, CM: CM, CS: CS, CT: CT» Col (74) = «A: A, BW: BW, CM: CM, CS: CS, CT: CT» Col (75) = «A: A, BX: BX, CM: CM, CS: CS, CT: CT» Col (76) = «A: A, BY: BY, CM: CM, CS: CS, CT: CT» Col (77) = «A: A, BZ: BZ, CM: CM, CS: CS, CT: CT» Col (78) = «A: A, CA: CA, CM: CM, CS: CS, CT: CT» Col (79) = «A: A, CB: CB, CM: CM, CS: CS, CT: CT» Col (80) = «A: A, CC: CC, CM: CM, CS: CS, CT: CT» Col (81) = «A: A, CD: CD, CM: CM, CS: CS, CT: CT» Col (82) = «A: A, CE: CE, CM: CM, CS: CS, CT: CT» Col (83) = «A: A, CF: CF, CM: CM, CS: CS, CT: CT» Col (84) = «A: A, CG: CG, CM: CM, CS: CS, CT: CT» «Я хочу разбить 84 новых файла, поэтому для тестирования я использую только 1, и для реальной вещи я иду с 84

Читайте так же:
Как изменить или увеличить размер шрифта в строке формул?

Dim Режим счетчика как целое

Si Режим тестирования = 1, alors Режим счетчика = 1 Режим счетчика Sinon = 84

Этот код запрашивает колонки и вставляет их в новую книгу

Сохраните отдельный файл

Dim ThePath, TheName, TheSwitch As String ThePath = ActiveWorkbook.Path + «» TheName = Left (ActiveWorkbook.Name, 34) ‘выведет расширение из имени ThePath = ThePath + TheName TheSwitch = Cells (3, 2) ‘In Cell (3,2) У меня есть имя индивидуального имени, поэтому я добавил имя файла. TheName = ThePath + «_» + TheSwitch + «.xls»

‘Я называю листы (1) лист1, потому что на исходном листе есть имя и дата образца. ‘ Я делаю это, чтобы иметь одинаковое имя во всех файлах истории, а затем я меняю имя листа на «Оригинальное имя

Трюк №84. Простое подключение кнопок к макросам

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

Обычно пользователи предпочитают выполнять макросы, либо нажав сочетание клавиш, либо щелкнув простую кнопку, а не искать нужный макрос в меню и диалоговых окнах. Самый известный способ добраться до кнопки — это панель инструментов Формы (Forms), которую можно открыть, выбрав команду Вид → Панели инструментов → Формы (View → Toolbars → Forms). Эти кнопки, по нашему мнению, представляют собой лучший выбор среди вариантов запуска макросов, особенно записанных макросов, так как такие макросы часто требуют, чтобы в момент выполнения активен был определенный рабочий лист.

Когда переключение между листами не происходит, записанные макросы всегда используют ActiveSheet. Чтобы макрос сработал, пользователь должен находиться на нужном листе (т.е. на том же листе, на котором был записан макрос). Если пользователь не находится на нужном листе, макрос, скорее всего, выдаст ошибку и остановится или изменит данные на неправильном листе. Вы можете заставить пользователя перейти к нужной кнопке на нужном рабочем листе, используя кнопку на рабочем листе, чтобы задать нужные условия перед запуском макроса.

Читайте так же:
Как извлечь из текстовых строк заглавные буквы или слова, начинающиеся с заглавной буквы?

Это происходит потому, что кнопка панели инструментов Forms не из панели инструментов Control? Почти всегда кнопки используются для распознавания щелчка мыши и последующего запуска определенного макроса. Для распознавания других событий используйте командную кнопку на панели инструментов управления. двойной щелчок, щелчок правой кнопкой мыши и т. д. Это добавляет совершенно ненужную нагрузку на Excel, когда вы используете эти элементы управления только для запуска макроса, особенно если кнопок много. Я думаю, это то же самое, что забивать гвозди кувалдой.

Ваша рабочая книга может содержать множество кнопок, и если каждой кнопке назначен соответствующий макрос, вы можете прикрепить к ним макросы, щелкнув по границе кнопки и выбрав в контекстном меню команду Назначить макрос. Затем выберите соответствующий макрос в диалоговом окне Назначить макрос (рис. 7.2).

Рис. 7.2. Выделенная кнопка showcal и диалоговое окно назначения макроса объекту с выбранным макросом

Рисунок 7.2: Выбранная кнопка Showcal и диалог назначения макроса для объекта с выбранным макросом.

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

Поместите следующий код в любой стандартный модуль. Выберите команду Разработчик → Редактор Visual Basic (Developer → Visual Basic Editor) (сочетание клавиш Alt/Option+Fll) и создайте новый модуль командой Insert > Module. Затем введите код из листинга 7.6.

//Листинг 7.6 Sub WhichButton() Run Application.Caller End Sub

Теперь необходимо дать каждой кнопке такое же имя, как и макросу, который она запускает. Имя кнопки можно изменить, щелкнув ее и заменив имя в поле имени именем макроса. Сделайте это для всех кнопок. Используя макрос WhichButton для назначения кнопки Macro1, щелчок на этой кнопке приведет к запуску макроса Macro1.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector