Excel 2010 как сохранить макрос

Создать макрос в Excel можно, запустив средство записи макросов или с помощью редактора Visual Basic для приложений (VBA). После создания макроса следует сохранить его для возможности повторного использования в текущей или в других книгах.

Сохранение макроса в текущей книге

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

Книга с макросами или кодом VBA

  • Сохранить в виде книги с поддержкой макросов (XLSM-файл), выбрав Нет.

  • Сохранить в виде книги без поддержки макросов, выбрав Да.

Чтобы сохранить макрос как книгу с поддержкой макросов,

  1. щелкните Нет.

  2. В окне Сохранить как в раскрывающемся списке Тип файла выберите Книга Excel с поддержкой макросов.
    Сохранить как книгу с поддержкой макросов

  3. Нажмите кнопку Сохранить.

Создание и сохранение макросов в личной книге

Чтобы макросы были доступны при каждом запуске Excel, создайте их в книге «Personal.xlsb». Это скрытая книга на вашем компьютере, которая открывается при каждом запуске Excel. Для получения сведений о выполнении этих действий см. статью Создание и сохранение всех макросов в одной книге.

Нужна дополнительная помощь?

Содержание

  1. Создание Личной книги макросов
  2. Как создать Личную Книгу Макросов
  3. Сохранение макросов в личной книге макросов
  4. Что нельзя сделать с помощью макрорекодера?
  5. Абсолютная и относительная запись макроса
  6. Безопасность макросов в современных версиях Excel (2007 и более новых)
  7. Исходные данные
  8. Как использовать Личную Книгу Макросов
  9. Сохранение файла Excel с названием из ячейки — без привязки к ячейке
  10. Как сохранить макрос в личную книгу макросов
  11. Предназначение Личной книги макросов
  12. Скрытие / отображение персональной макрокоманды
  13. Запись макроса в 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), который автоматически в скрытом режиме открывается одновременно с Microsoft Excel. Т.е. когда вы просто запускаете Excel или открываете любой файл с диска, на самом деле открываются два файла – ваш и Personal.xlsb, но второго мы не видим. Таким образом все макросы, которые хранятся в ЛКМ оказываются доступы для запуска в любой момент, пока открыт Excel.

Если вы еще ни разу не пользовались ЛКМ, то изначально файл Personal.xlsb не существует. Самый легкий способ его создать – это записать рекордером какой-нибудь ненужный бессмысленный макрос, но указать в качестве места для его хранения Личную Книгу – тогда Excel будет вынужден автоматически ее для вас создать. Для этого:

  1. Откройте вкладку Разработчик (Developer). Если вкладки Разработчик не видно, то ее можно включить в настройках через Файл – Параметры – Настройка ленты (Home – Options – Customize the Ribbon).
  2. На вкладке Разработчик нажмите кнопку Запись макроса (Record Macro). В открывшемся окне выберите Личную книгу макросов (Personal Macro Workbook) как место для хранения записанного кода и нажмите OK:

  3. Остановите запись кнопкой Остановить запись (Stop Recording) на вкладке Разработчик (Developer)

Проверить результат можно, нажав на кнопку Visual Basic там же на вкладке Разработчик – в открывшемся окне редактора в левом верхнем углу на панели Project – VBA Project должен появиться наш файл PERSONAL.XLSB. Его ветку которого можно развернуть плюсиком слева, добравшись до Module1, где и хранится код только что записанного нами бессмысленного макроса:

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

Сохранение макросов в личной книге макросов

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

Выберите «Персональная книга макросов» в раскрывающемся списке под категорией « Хранить макрос» .

  • Запишите свой второй макрос.
  • Укажите детали макроса в диалоговом окне «Запись макроса», как показано ниже.
  • Нажмите ОК.

Ваша запись начинается. Создайте таблицу, как показано ниже.

  • Прекратить запись.

  • Нажмите вкладку VIEW на ленте.

  • Нажмите Макросы.

  • Выберите View Macros из выпадающего списка. Откроется диалоговое окно «Макрос».

Прекратить запись.

Нажмите вкладку VIEW на ленте.

Нажмите Макросы.

Выберите View Macros из выпадающего списка. Откроется диалоговое окно «Макрос».

Имя макроса отображается с префиксом PERSONAL.XLSB! указывает на то, что макрос находится в личной книге макросов.

Сохраните свою рабочую книгу. Он будет сохранен как файл .xls, так как макрос отсутствует в вашей книге и закроет Excel.

Вы получите следующее сообщение о сохранении изменений в Персональной книге макросов:

Нажмите кнопку Сохранить. Ваш макрос сохраняется в файле Personal.xlsb на вашем компьютере.

Что нельзя сделать с помощью макрорекодера?

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

  • Вы не можете выполнить код без выбора объекта. Например, если вы хотите, чтобы макрос перешел на следующий рабочий лист и выделил все заполненные ячейки в столбце A, не выходя из текущей рабочей таблицы, макрорекодер не сможет этого сделать. В таких случаях вам нужно вручную редактировать код.
  • Вы не можете создать пользовательскую функцию с помощью макрорекордера. С помощью VBA вы можете создавать пользовательские функции, которые можно использовать на рабочем листе в качестве обычных функций.
  • Вы не можете создавать циклы с помощью макрорекордера. Но можете записать одно действие, а цикл добавить вручную в редакторе кода.
  • Вы не можете анализировать условия: вы можете проверить условия в коде с помощью макрорекордера. Если вы пишете код VBA вручную, вы можете использовать операторы IF Then Else для анализа условия и запуска кода, если true (или другой код, если false).

Абсолютная и относительная запись макроса

Вы уже знаете про абсолютные и относительные ссылки в Excel? Если вы используете абсолютную ссылку для записи макроса, код VBA всегда будет ссылаться на те же ячейки, которые вы использовали. Например, если вы выберете ячейку A2 и введете текст “Excel”, то каждый раз – независимо от того, где вы находитесь на листе и независимо от того, какая ячейка выбрана, ваш код будет вводить текст “Excel” в ячейку A2.

Если вы используете параметр относительной ссылки для записи макроса, VBA не будет привязываться к конкретному адресу ячейки. В этом случае программа будет “двигаться” относительно активной ячейки. Например, предположим, что вы уже выбрали ячейку A1, и вы начинаете запись макроса в режиме относительной ссылки. Теперь вы выбираете ячейку A2, вводите текст Excel и нажмите клавишу Enter. Теперь, если вы запустите этот макрос, он не вернется в ячейку A2, вместо этого он будет перемещаться относительно активной ячейки. Например, если выбрана ячейка B3, она переместится на B4, запишет текст “Excel” и затем перейдет к ячейке K5.

Теперь давайте запишем макрос в режиме относительных ссылок:

  1. Выберите ячейку A1.
  2. Перейдите на вкладку “Разработчик”.
  3. В группе “Код” нажмите кнопку “Относительные ссылки”. Он будет подсвечиваться, указывая, что он включен.
  4. Нажмите кнопку “Запись макроса”.
  5. В диалоговом окне “Запись макроса” введите имя для своего макроса. Например, имя “ОтносительныеСсылки”.
  6. В опции “Сохранить в” выберите “Эта книга”.
  7. Нажмите “ОК”.
  8. Выберите ячейку A2.
  9. Введите текст “Excel” (или другой как вам нравится).
  10. Нажмите клавишу Enter. Курсор переместиться в ячейку A3.
  11. Нажмите кнопку “Остановить запись” на вкладке “Разработчик”.

Макрос в режиме относительных ссылок будет сохранен.

Теперь сделайте следующее.

  1. Выберите любую ячейку (кроме A1).
  2. Перейдите на вкладку “Разработчик”.
  3. В группе “Код” нажмите кнопку “Макросы”.
  4. В диалоговом окне “Макрос” кликните на сохраненный макрос “ОтносительныеСсылки”.
  5. Нажмите кнопку “Выполнить”.

Как вы заметите, макрос записал текст “Excel” не в ячейки A2. Это произошло, потому что вы записали макрос в режиме относительной ссылки. Таким образом, курсор перемещается относительно активной ячейки. Например, если вы сделаете это, когда выбрана ячейка B3, она войдет в текст Excel – ячейка B4 и в конечном итоге выберет ячейку B5.

Вот код, который записал макрорекодер:

 Sub ОтносительныеСсылки() ' ' ОтносительныеСсылки Макрос ' ' ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "Excel" ActiveCell.Offset(1, 0).Range("A1").Select End Sub 

Обратите внимание, что в коде нет ссылок на ячейки B3 или B4. Макрос использует Activecell для ссылки на текущую ячейку и смещение относительно этой ячейки.

Не обращайте внимание на часть кода Range(«A1»). Это один из тех случаев, когда макрорекодер добавляет ненужный код, который не имеет никакой цели и может быть удален. Без него код будет работать отлично.

Безопасность макросов в современных версиях Excel (2007 и более новых)

Чтобы запустить макрос в современных версиях Excel, файл должен быть сохранён как Книга Excel с поддержкой макросов. Открывая такой файл, по его расширению xlsm Excel понимает, что в данной рабочей книге содержатся макросы (в отличие от файла со стандартным расширением xlsx).

Поэтому, чтобы иметь возможность запускать созданный в обычной рабочей книге Excel макрос всегда и везде, нужно сохранить её с расширением xlsm. Для этого на вкладке Файл (File) нажмите Сохранить как (Save as) и в поле Тип файла (Save as type) выберите Книга Excel с поддержкой макросов (Excel Macro-Enabled Workbook).

Отличие в типе файлов ясно указывает на то, что рабочая книга содержит макросы, и это уже становится первым важным шагом к соблюдению мер безопасности. Помимо этого, в Excel существует несколько режимов безопасности макросов, выбрать один их которых можно в меню параметров приложения. Вот эти режимы:

  1. Отключить все макросы без уведомления (Disable all macros without notification)

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

  2. Отключить все макросы с уведомлением (Disable all macros with notification)

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

  3. Отключить все макросы без цифровых подписей (Disable all macros except digitally signed macros)

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

  4. Включить все макросы (Enable all macros)

    Разрешено выполнение всех макросов. При открытии книги Excel не появляется уведомление о том, что в ней содержатся макросы. Соответственно пользователь может не знать, что какой-либо макрос выполняется, пока открыт файл.

Вариант Отключить все макросы с уведомлением — позволяет при открытии файла сделать выбор: разрешить запуск макросов или отключить их. При этом вверху листа появляется жёлтая полоса с уведомлением и кнопкой, как показано на рисунке ниже:

Чтобы разрешить выполнение макросов нужно просто кликнуть по кнопке Включить содержимое (Enable Content).

Исходные данные

Сначала давайте разберем исходные данные, которые я буду использовать в примерах. Пусть это будет некая абстракция марок автомобилей с указанием их VIN номера.

Примечание! Я использую Excel 2013.

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

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

Как использовать Личную Книгу Макросов

Дальше все просто. Любой нужный вам макрос (т.е. кусок кода, начинающийся на Sub и заканчивающийся End Sub) можно смело копировать и вставлять либо в Module1, либо в отдельный модуль, добавив его предварительно через меню Insert – Module. Хранить все макросы в одном модуле или раскладывать по разным – исключительно вопрос вкуса. Выглядеть это должно примерно так:

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

В этом же окне, нажав кнопку Параметры (Options), можно задать сочетание клавиш для быстрого запуска макроса с клавиатуры. Будьте внимательны: сочетания клавиш для макросов различают раскладку (русская или английская) и регистр.

Кроме обычных макросов-процедур в Личной Книге можно хранить и пользовательские макро-функции (UDF = User Defined Function). В отличие от процедур, код функций начинаются с оператора Function или Public Function, а заканчиваются на End Function:

Код необходимо аналогичным образом скопировать в любой модуль книги PERSONAL.XLSB и затем можно будет вызвать функцию обычным образом, как любую стандарную функцию Excel, нажав кнопку fx в строке формул и выбрав функцию в окне Мастера Функций в категории Определенные пользователем (User Defined):

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

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

Замените код процедуры следующим кодом, который совсем немного, но изменен.

 Sub SaveFile() 'Объявление переменных Dim CellValue As String Dim Path As String Dim FinalFileName As String 'Временно отключаем показ вспомогательных сообщений Application.DisplayAlerts = False 'Задаём каталог сохранения файла (в данном случае текущий каталог) Path = ThisWorkbook.Path & "" 'Проверка значения ячейки If ActiveCell.Value = "" Then MsgBox "В ячейке отсутствует значение", vbCritical, "Ошибка!" Exit Sub End If 'Получаем значение активной ячейки CellValue = ActiveCell.Value 'Формируем итоговый путь и название файла FinalFileName = Path & CellValue 'Сохраняем файл ActiveWorkbook.SaveAs FileName:=FinalFileName, _ FileFormat:=xlOpenXMLWorkbook 'FileFormat:=xlOpenXMLWorkbookMacroEnabled 'Для сохранения файла с макросом 'Включаем вывод сообщений Application.DisplayAlerts = True MsgBox "Файл успешно сохранен с названием - " & CellValue, vbInformation, "Результат" End Sub 

Проверяем работу, становимся на нужную ячейку, и запускаем макрос (в процедуре я добавил проверку, если выбрана пустая ячейка, возникнет ошибка).

Как видим, все отработало.

Как сохранить макрос в личную книгу макросов

Чтобы создать и схоронить код в личной книге макросов:

  1. Выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Запись макроса».
  2. В появившемся диалоговом окне «Запись макроса», из выпадающего списка «Сохранить в:» выберите опцию «Личная книга макросов». И нажмите на кнопку OK.
  3. Теперь выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Остановить запись».
  4. Откройте редактор Visual Basic: «РАЗРАБОТЧИК»-«Код»-«Visual Basic». Или нажмите комбинацию горячих клавиш ALT+F11. В окне «Project-VBAProject», в дереве проектов появиться доступная еще одна книга Personal.xlsb. Кликните на «плюсик» слева на против этой книги, чтобы раскрыть проект книги Personal.xlsb. А после двойным щелчком отройте ее Module1.
  5. В результате откроется окно кода модуля с зарегистрированным макросом. Удалите его код и введите код своего макроса. Выберите инструмент в редакторе макросов: «File»-«Save Personal.xlsb», а потом закройте редактор Visual Basic.

Теперь у вас подключена скрытая книга для хранения макросов, к которым можно получить доступ из любой другой рабочей книги. Личная книга макросов где находится находиться в папке автозагрузки файлов Excel – XLSTART: C:Documents and SettingsUser_NameAppDataRoamingMicrosoftExcelXLSTARTPersonal.xlsb

Примечание. XLSTART – это папка для автозагрузки файлов вместе с запуском программы Excel. Если сохранить файл в данную папку, то он будет открываться вместе с программой Excel. Для версий старше 2007 путь к папке автозагрузки будет следующим: C:Program FilesMicrosoft OfficeOffice12Xlstart.

Если вам нужно записать в нее новый макрос просто откройте редактор, а потом откройте модуль книги Personal.xlsb. Уже записанные в нее макросы удалять не нужно. Они не будут между собой конфликтовать если соблюдать одно простое правило – в одном модуле нельзя хранить макросы с одинаковыми именами.

Предназначение Личной книги макросов

Предназначением Личной книги макросов является хранение пользовательского программного кода (макросов) в виде подпрограмм и функций для использования их в других рабочих книгах Excel. Главное преимущество этой книги заключается в том, что подпрограммы и функции, сохраненные в Личной книге макросов, всегда доступны для вызова их из других книг, так как она загружается автоматически при загрузке Excel и закрывается вместе с приложением.

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

Подпрограммы, размещенные в Личной книге макросов, можно просмотреть в окне «Список макросов», открыв его из любой книги Excel (функции в этом окне не представлены). Они будут перечислены с приставкой «PERSONAL.XLSB!».

Пользовательские функции, размещенные в Личной книге макросов, доступны для записи их в ячейки рабочего листа с помощью Мастера функций:

  Список пользовательских функций в Личной книге макросов

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

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

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

Скрытие / отображение персональной макрокоманды

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

  • Нажмите вкладку VIEW на ленте.

  • Нажмите Показать в группе окон.

Нажмите вкладку VIEW на ленте.

Нажмите Показать в группе окон.

Откроется диалоговое окно «Показать».

PERSONAL.XLSB появится в поле «Показать книгу» и нажмите «ОК».

Теперь вы можете просматривать макросы, сохраненные в личной книге макросов.

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

  • Нажмите на личную книгу макросов.
  • Нажмите вкладку VIEW на ленте.
  • Нажмите Скрыть на ленте.

Запись макроса в Excel

Теперь давайте запишем очень простой макрос, который выбирает ячейку и вводит в нее текст, например “Excel”.

Вот шаги для записи такого макроса:

  1. Перейдите на вкладку “Разработчик”.
  2. В группе “Код” нажмите кнопку “Запись макроса”. Откроется одноименное диалоговое окно.
  3. В диалоговом окне “Запись макроса” введите имя для своего макроса, например “ВводТекста”. Есть несколько условий именования, которые необходимо соблюдать при назначении макроса. Например, вы не можете использовать пробелы между ними. Обычно я предпочитаю сохранять имена макросов как одно слово, с разными частями с заглавным первым алфавитом. Вы также можете использовать подчеркивание для разделения двух слов – например, “Ввод_текста”.
  4. Если вы хотите, то можете задать сочетание клавиш. В этом случае мы будем использовать ярлык Ctrl + Shift + N. Помните, что сочетание, которое вы указываете, будет отменять любые существующие горячие клавиши в вашей книге. Например, если вы назначили сочетание Ctrl + S, вы не сможете использовать это для сохранения рабочей книги (вместо этого, каждый раз, когда вы его используете, он выполняет макрос).
  5. В поле “Сохранить в” убедитесь, что выбрана опция “Эта книга”. Этот шаг гарантирует, что макрос является частью рабочей книги. Он будет там, когда вы сохраните его и снова откроете, или даже если вы поделитесь файлом с кем-то.
  6. Введите описание при необходимости. Обычно я этого не делаю, но если у вас много макросов, лучше указать, чтобы в будущем не забыть что делает макрос.
  7. Нажмите “ОК”. Как только вы нажмете OK, Excel начнет записывать ваши действия. Вы можете увидеть кнопку “Остановить запись” на вкладке “Разработчик”, которая указывает, что выполняется запить макроса.
  8. Выберите ячейку A2.
  9. Введите текст “Excel” (или вы можете использовать свое имя).
  10. Нажмите клавишу Enter. Вы попадете на ячейку A3.
  11. Нажмите кнопку “Остановить запись” на вкладке “Разработчик”.

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

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

  1. Удалите текст в ячейке A2. Это нужно, чтобы проверить будет ли макрос вставлять текст в ячейку A2 или нет.
  2. Выберите любую ячейку – кроме A2. Это нужно проверить, выбирает ли макрос ячейку A2 или нет.
  3. Перейдите на вкладку “Разработчик”.
  4. В группе “Код” нажмите кнопку “Макросы”.
  5. В диалоговом окне “Макрос” щелкните макрос “ВводТекста”.
  6. Нажмите кнопку “Выполнить”.

Вы увидите, что как только вы нажмете кнопку “Выполнить”, текст “Excel” будет вставлен в ячейку A2 и выбрана ячейка A3. Это происходит за миллисекунды. Но на самом деле макрос последовательно выполнил записанные действия.

Примечание. Вы также можете запустить макрос с помощью сочетания клавиш Ctrl + Shift + N (удерживайте клавиши Ctrl и Shift, а затем нажмите клавишу N). Это тот же самый ярлык, который мы назначили макросу при его записи.

Источники

  • https://vremya-ne-zhdet.ru/vba-excel/lichnaya-kniga-makrosov/
  • https://www.planetaexcel.ru/techniques/3/5201/
  • https://coderlessons.com/tutorials/bolshie-dannye-i-analitika/izuchite-excel-makrosy/makrosy-excel-makrosy-v-odnoi-knige
  • https://micro-solution.ru/excel/vba/first-macros
  • http://officeassist.ru/excel/kak-soxranit-makrosy-excel/
  • https://info-comp.ru/obucheniest/703-excel-save-as-file-on-vba.html
  • https://exceltable.com/vba-macros/lichnaya-kniga-makrosov

Сохранение макроса

​Смотрите также​​ листе Excel или​ своими инструментами для​ ответа и заранее​ почитал в интернете,​ sFolder As String,​: RAN,​// These are​_Igor_61​ бы вопроса:[QUOTE]PATRI0T написал:​На листе обработчик​Разработчик​Разработчик​Вы можете назначить макрос​ желательно ввести понятное​ Visual Basic для​ уделить пару секунд​Примечание:​ список данных будет​ автоматизации работы в​ багодарен за какую-либо​ что если выбрать​

​ sFiles As String​Скопировал в личную​ the main file​: RAN, не, не​ А зачем это?​ на событие Workbook_Open​щелкните​нажмите кнопку​ значку и добавить​ описание, которое будет​ приложений (VBA). Например,​

Сохранение макроса в текущей книге

​ и сообщить, помогла​Мы стараемся как​ становиться больше. Относительные​ Excel и создания​ помощь!​​ «личная книга макросов»,​​ ‘диалог запроса выбора​​ книгу макросов.​​ formats in Excel​ съедят, еще больше​ Kill Addr &​Что делаю:​Макросы​Запись макроса​ его на панель​ полезно вам и​ вы можете записать​ ли она вам,​ можно оперативнее обеспечивать​

Книга с макросами или кодом VBA

  • ​ средства не привязывают​ макросов.​Юрий М​​ то он сохранится​​ папки с файлами​

  • ​Создал пустой файл​ 2007-2010:​ «ВАУ»!​​ «Файл без макросов​​1.Копирую текущий лист​

​, чтобы просмотреть макросы,​.​ быстрого доступа или​

  1. ​ всем, кто запускает​​ макрос, который сначала​​ с помощью кнопок​

  2. ​ вас актуальными справочными​​ курсор к конкретному​​Макросы – это внутренние​​: Здравствуйте! Уточните: один​​ в некой папке​​ With Application.FileDialog(msoFileDialogFolderPicker) If​ Книга1.xlsm с 6​​// 51 =​
    Сохранить как книгу с поддержкой макросов

  3. ​Надеюсь, я тоже​​ 2007.xlsx[/CODE]​​ в новую книгу,​

Создание и сохранение макросов в личной книге

​ связанные с книгой.​В поле​ ленту.​ макрос. Если у​ обновляет таблицу в​ внизу страницы. Для​ материалами на вашем​ адресу ячейки.​ приложения, которые берут​ и тот же​ xlstart. Так вот​ .Show = False​ листами.​ xlOpenXMLWorkbook (without macro’s​

support.office.com

Автоматизация задач с помощью средства записи макросов — Excel

​ когда-то такие задачки​​В модуле к​ удаляю все лишнее​ При этом откроется​Имя макроса​Назначение макроса для элемента​ вас много макросов,​ Excel, а затем​ удобства также приводим​ языке. Эта страница​По умолчанию в Excel​ на себя всю​ файл (B.xls) нужно​ нет нигде у​ Then Exit Sub​Открыл его и​ in 2007-2010, xlsx)​ буду сходу решать,​ этой и еще​ на листе (управляющие​ диалоговое окно​

​введите название макроса.​ управления на листе​ описания помогут быстро​ открывает Outlook для​ ссылку на оригинал​ переведена автоматически, поэтому​ включен режим «Абсолют»,​ рутинную работу, облегчая​ сохранить 100 раз​ меня такой папки.​ sFolder = .SelectedItems(1)​ запустил ваш макрос.​// 52 =​ но пока -​ к нескольким строкам​

​ кнопки (shape), лишние​

​Макрос​ Сделайте имя понятным,​Вы можете назначать макросы​ определить, для чего​ ее отправки по​ (на английском языке).​ ее текст может​ но вы можете​ жизнь пользователю. Каждый​ с новыми именами?​Далее: допустим, я​ End With With​Ошибка. Выделена строка.​ xlOpenXMLWorkbookMacroEnabled (with or​ изучаю VBA в​ есть комментарии.​ строки .итд)​.​ чтобы можно было​ формам и элементам​ они нужны.​ электронной почте.​Для автоматизации повторяющихся задач,​ содержать неточности и​ изменить его, включив​ пользователь может создать​vfr800​ нашел эту папку.​ UserForm1 .Show 0​ActiveWorkbook.SaveAs sfName1, 51​ without macro’s in​

​ основном на уровне​Так же обратите​2. Удаляю макросы​Примечание:​ быстро найти нужный​ ActiveX на листе.​Чтобы начать запись макроса,​Чтобы записать макрос, следуйте​ вы можете записать​ грамматические ошибки. Для​ кнопку «Относительные ссылки»​ макрос без знания​: Нет, файл B.xls​ Чтобы дать доступ​ .Label1.Caption = «Работаем…»​И табличка.​ 2007-2010, xlsm)​ макрорекордера, т.к. не​ внимание на названия​

​ (внизу код)​ Макросы нельзя отменить. Прежде​​ макрос.​​Включение и отключение макросов​ нажмите кнопку​ инструкциям ниже.​ макрос с средство​ нас важно, чтобы​ расположенную ниже под​

Вкладка

Запись макроса

​ языков программирования. Для​ каждый раз изменяется(над​

  • ​ к макросу другим​ .Repaint For i​Что нужно изменить​// 50 =​ хватает времени учебники​ файлов в коде.​3. сохраняю как​ чем впервые запускать​Примечание:​

  • ​ в файлах Office​ОК​На вкладке​ записи макросов в​ эта статья была​

  • ​ кнопкой «Запись макроса»​ этого существует макрорекодер,​ этим как раз​ пользователям, то нужно​ = 1 To​ что бы макрос​ xlExcel12 (Excel Binary​ читать. И в​ Мои названия поменяйте​ файл .xls (xlExcel8)​ записанный макрос, сохраните​ Первым символом имени макроса​Узнайте, как включать и​.​Разработчик​ Microsoft Excel. Представьте​

​ вам полезна. Просим​ на панели инструментов​

  1. ​ который запускается с​​ и работает макрос​​ загрузить его им​​ 100000000 Next sFolder​​ заработал из личной​​ Workbook in 2007-2010​​ Вашем коде многое​

    ​ на Ваши​

    ​Sheets(«Новый Заказ»).Copy Call​​ книгу или создайте​​ должна быть буква.​​ отключать макросы в​​Выполните действия, которые нужно​​в группе​​ имеют даты в​​ вас уделить пару​​ вкладки «Разработчик»:​

    Команда

  2. ​ помощью кнопки «Запись​​ из файла A.xls)…точнее​​ в ту же​ = sFolder &​ книги макросов. Из​ with or without​ для меня -​

    ​_Igor_61​​ Delete_Macroses ActiveWorkbook.SaveAs FileName:=ПутьСохранения​ ее копию, чтобы​ Последующие символы могут​ файлах Office.​ записать.​Код​ форматах случайных и​ секунд и сообщить,​Абсолютный отсчет ячеек, всегда​ макроса».​ содержимое меняется…а путь​ папку у них?​ IIf(Right(sFolder, 1) =​ листа текущей книги​ macro’s, xlsb)​ темный лес. Например,​

  3. ​: Александр, здравствуйте! Но​ & «» &​ предотвратить внесение нежелательных​​ быть буквами, цифрами​​Открытие редактора Visual Basic​На вкладке​нажмите кнопку​ вы хотите применить​​ помогла ли она​​ ведется с исходного​​В этом режиме все​​ расположения и название​Спасибо.​ Application.PathSeparator, «», Application.PathSeparator)​ отрабатывает корректно. Прикрепленные​// 56 =​ я не знаю,​ тогда пользователю нужно​ Fname, FileFormat:=xlExcel8, Password:=»»,​​ изменений. Если вас​​ или знаками подчеркивания.​Нажмите клавиши​Разработчик​Запись макроса​ ко всем адресам​

  4. ​ вам, с помощью​​ положения (адрес ячейки​​ действия пользователя макрорекодер​ файла B.xls остаются​P.S. сейчас сижу​

    ​ ‘отключаем обновление экрана,​ файлы 2017-10-07_193636.png (3.59​​ xlExcel8 (97-2003 format​​ какую роль выполняет​ лезть в параметры,​ WriteResPassword:=»», ReadOnlyRecommended:=False, CreateBackup:=False​ не устраивают результаты​ В имени макроса​ALT+F11​в группе​.​ единый формат. Макрос​ кнопок внизу страницы.​ А1) – до​ в Excel записывает,​ прежними.​

  5. ​ за компьютером, где​​ чтобы наши действия​​ КБ)​ in Excel 2007-2010,​ $ в названиях​

    ​ ставить доверенный доступ​Этой процедурой удаляю​ выполнения макроса, вы​ не должно содержаться​.​Код​-ИЛИ-​ сделать это за​ Для удобства также​ адреса курсора с​ переводя на язык​Юрий М​

  6. ​ Excel 2013.​ не мелькали Application.ScreenUpdating​​Юрий М​​ xls)​

  7. ​ переменных sfName, также​ и перезапускать приложение,​

  8. ​ макросы (пытаюсь)​​ можете закрыть книгу,​​ пробелов; в качестве​​Поиск справки по использованию​​нажмите кнопку​​Нажмите​ Изображение кнопки​ вас. Запись макроса,​

    ​ приводим ссылку на​

    ​ вашими данными. Если​​ программирования VBA-код в​​: Вы говорите «Нет»,​​Manyasha​​ = False sFiles​​: Игорь, всё верно.​​// 57 = PDF​​ не понимаю, как​​ что для пользователя,​

Работа с макросами, записанными в Excel

​Sub Delete_Macroses() Dim​​ не сохраняя ее.​​ разделителей слов следует​​ редактора Visual Basic​​Остановить запись​ALT​ применив нужный формат​ оригинал (на английском​​ вы сохранили ваш​​ автоматическом режиме. После​ а из ответа​​:​​ = Dir(sFolder &​

Диалоговое окно

​_Igor_61​​// 60 =​ и почему одной​ думаю не очень​ oVBComponent As Object,​Ниже приведены дополнительные сведения​ использовать знаки подчеркивания.​Узнайте, как найти справку​.​+​ и затем воспроизводить​ языке) .​

​ макрос в книге​ завершения записи мы​ следует «Да» :-)​

​iilfat​

​ «*№*.xlsm») Do While​

​: Юрий М, спасибо!​ xlOpenDocumentSpreadsheet OpenDocument Spreadsheet​

​ и той же​ удобно. Поэтому по-моему​ lCountLines As Long​

​ о работе с​

​ Если используется имя​ по элементам Visual​-ИЛИ-​T​ макроса при необходимости.​Создать макрос в Excel​ личных макросов (рекомендуется​

​ получаем готовую программу,​

​ Каждый раз после​, а сохранить в​ sFiles <> «»​RAN​

​_Igor_61​ переменной (стр.4 и​

​ проще это все​ ‘Проверяем, защищен проект​ макросами в Excel.​ макроса, являющееся ссылкой​ Basic.​Нажмите​+​Windows MacOS ​

​ можно, запустив средство​ так и делать),​

  1. ​ которая сама выполняет​ обработки файл B.xls​ Эта Книга Вас​ ‘открываем книгу Workbooks.Open​: sfName1 = ThisWorkbook​: Блин, как же​ 5) можно присвоить​​ сделать просто пересохранением​​ или нет For​

  2. ​Задача​​ на ячейку, может​​С помощью редактора Visual​ALT​

​M​

​При записи макроса все​ записи макросов или​ то вы можете​ те действия, которые​ сохраняется с новым​

​ не устроило?​ sFolder & sFiles​

​ActiveWorkbook​ я люблю этот​ разные значения (или​

​ файлов, а потом​ Each oVBComponent In​

​Описание​ появиться сообщение об​ Basic (VBE) вы​

​+​

​+​​ необходимые действия записываются​​ с помощью редактора​

​ использовать свою программу​ выполнял пользователь при​

​ именем. Покажите Ваши​Макрос будет доступен​ ‘действия с файлом​

Работа с записанным кодом в редакторе Visual Basic (VBE)

​.FullName​ форум! Каждый раз​ это функции -​ лишний файл удалить.​ ActiveWorkbook.VBProject.VBComponents On Error​Включение и отключение макросов​ ошибке, указывающее на​ можете добавлять в​T​R​ в виде кода​ Visual Basic для​ на других листах​ записи.​ файлы. Предварительно ознакомьтесь​ всем пользователям, у​ Sheets(«Приложение № 7​……………………………………..​ какое-то «ВАУ» для​

​ не знаю), ну​ ИМХО, конечно​ Resume Next With​Узнайте, как включать и​ недопустимое имя макроса..​

Запись макроса

​ записанный код собственные​+​

  • ​.​ Visual Basic для​ приложений (VBA). После​ с аналогичными данными.​Как записать готовый макрос​ с Правилами.​ кого есть Ваш​ «).Select ActiveSheet.Unprotect ‘снимаем​ActiveWorkbook​

  • ​ себя нахожу! Юрий​ и т.д. -​Александр П.​ oVBComponent Select Case​ отключать макросы в​

  • ​В списке​ переменные, управляющие структуры​M​В поле​ приложений (VBA). Такими​ создания макроса следует​ Независимо от того,​ в Excel? Очень​vfr800​ файл.​ блокировку с листа​. Sheets(Array(1, 3)).Copy​ М, спасибо большое!​ короче, мне в​: _Igor_61, ну так,​ .Type Case 1​

​ Excel для Mac.​Сохранить в​​ и другие элементы,​​+​Имя макроса​ действиями может быть​

  1. ​ сохранить его для​​ где ваш курсор​​ просто:​​: Простите мою необознанность…как-никак​​А Вы запишите​​ Cells.Select ‘выделяем весь​​……………………………​

  2. ​ Сохранил Ваши пояснения,​​ этом коде понятны​​ наше дело предложить​​ ‘Модули .Collection.Remove oVBComponent​​Создание, выполнение, изменение или​​выберите книгу, в​​ которые не поддерживает​R​​введите название макроса.​​ ввод текста или​

​ возможности повторного использования​ позиционируется, когда вы​

  1. ​На вкладке «Разработчик» нажимаем​​ новичек я во​​ сначала какой-нибудь макрос​​ лист Selection.Copy ‘Копируем​​RAN​

  2. ​ они очень пригодятся​​ только строки после​​ вариант​ Case 2 ‘Модули​ удаление макроса ​ которой вы хотите​ средство записи макросов.​

    ​.​​ Сделайте имя понятным,​ чисел, выбор ячеек​ в текущей или​ начинаете запись макроса!​ кнопку «Запись макроса».​ всем этом. Вообщем​ с сохранением в​ Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone,​: _Igor_61,​ в дальнейшем. Не​ «Next», и то​.​ Класса .Collection.Remove oVBComponent​Чтобы сэкономить время на​ сохранить макрос.​ Так как средство​

  3. ​На вкладке​​ чтобы можно было​​ или команд на​ в других книгах.​ Даже если он​

    ​В появившимся диалоговом окне​ суть такова: открываем​​ личную книгу, а​​ SkipBlanks _ :=False,​F1, Search results​ знал, что части​ не все, например,​У ТСа так​ Case 3 ‘Формы​ выполнении часто повторяющихся​Как правило, макросы сохраняются​ записи макросов фиксирует​Разработчик​ быстро найти нужный​ ленте или в​Если понадобится использовать макрос​ уже находится в​ заполняем параметры макроса.​ во вложении файл​ потом ищите ее​ Transpose:=False ‘ вставляем​ for enumeration​ кода можно цифрами​ не знаю что​ же, может быть​

  4. ​ .Collection.Remove oVBComponent Case​ задач, можно записать​ в​​ почти каждый шаг,​​щелкните​ макрос.​ меню, форматирование ячеек,​ только в той​ ячейке A1, ваш​ И нажимаем «ОК».​ «Прога.xls»…в ней макрос​ (Personal.xlsb):​ в лист значения​Николай​ задавать (хотя, нет,​ значат «51» и​

  5. ​ только 2003 версия​​ 100 ‘ЭтаКнига, Листы​​ соответствующую последовательность действий​той же книге​ выполняемый во время​

    ​Макросы​Примечание:​ строк или столбцов​ книге, где он​ первый макрос лучше​После завершения нажимаем на​ на кнопке «Нажми​C:UsersМаринаAppDataRoamingMicrosoftExcelXLSTART​ за место формул​: Кнопка цитирования не​ пример уже знаю​ «56», ну и​ офиса, без конвертера.​ lCountLines = .CodeModule.CountOfLines​ в виде макроса.​

  6. ​, но если вам​ записи, может также​​, чтобы просмотреть макросы,​​ Первым символом имени макроса​

  7. ​ и даже импорт​ был создан, нажмите​

  8. ​ записывать после нажатия​​ кнопку «Остановить запись»,​​ тут»…после выполнения макроса​​(у меня win8,​​ Range(«A1»).Select Sheets(«Приложение №​

Работа с макросами, записанными в Excel

​ для ответа [МОДЕРАТОР]​​ — в MsgBox​​ т.д. не буду​​ Тогда в .xlsx​​ .CodeModule.DeleteLines 1, lCountLines​ Узнайте, как создавать​ нужно, чтобы данный​ потребоваться удалить ненужный​​ связанные с книгой.​​ должна быть буква.​

​ данных из внешнего​​ кнопку​ клавиш должны быть​ после чего макрос​ открывается файл «Зразок.xls»​ на 7-ке также​ 3 «).Select ActiveSheet.Unprotect​sfName1 = ActiveWorkbook.FullName​ 64, 32, 48),​ все перечислять, т.к.​ он не сможет​ End Select End​

​ и выполнять макросы.​ макрос был всегда​ код. Просмотр записанного​

​ Кроме того, можно​

​ Последующие символы могут​

​ источника, такого как​

​Сохранить​ Ctrl + Home.​ будет автоматически сохранен.​

​ который нужно сохранить​ вроде)​

​ Cells.Select Selection.Copy Selection.PasteSpecial​Оказалось достаточно, работает.Но​ это, видимо, что-то​ для каждого моего​ сохранять. А так,​ With Next Set​Копирование модуля макроса в​

​ доступен при работе​ кода — отличный​

​ нажать клавиши​ быть буквами, цифрами​ Microsoft Access. Visual​или​Пример: Представьте себе, что​Для выполнения или редактирования​ в директории «…Обробка»​iilfat​

​ Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks​ изменил и​

  1. ​ подобное, если правильно​ вопроса придется делать​ была уже похожая​ oVBComponent = Nothing​ другую книгу​ в Excel, выберите​ способ научиться программировать​​ALT+F8​​ или знаками подчеркивания.​

  2. ​ Basic для приложений​​Сохранить как​​ каждый месяц вы​ записанного макроса нажимаем​

​ с именем 1…99.xls​

​:​ _ :=False, Transpose:=False​ActiveWorkbook. Sheets(Array(1, 3)).Copy​ понимаю. Т.е. вместо​ отдельную тему​

​ тема на форуме.​ End Sub​

​Если книга содержит макрос​ вариант Личная книга​ на VBA или​

​. При этом откроется​

​ В имени макроса​​ (VBA) является частью​​так же, как​​ получаете десятки таблиц​​ на кнопку «Макросы»​​ каждый раз имя​​Manyasha​​ Range(«A1»).Select Sheets(«Титульный»).Select Range(«A1»).Select​​Работает.​​ «xlOpenXMLWorkbook (without macro’s​​Ради интереса попробовал​

​sokol92​В результатеФайл занимает 52​

​ VBA, который нужно​ макросов. Если вы​ отточить свои навыки.​

support.office.com

VBA. Как сохранить книгу без макросов в формате .xls

​ диалоговое окно​​ не должно содержаться​
​ языка программирования Visual​ при обычном сохранении.​ из всех филиалов.​ (или комбинацию клавиш​
​ должно быть +1…надеюсь​, спасибо большое)​ Sheets(«Микроучасток»).Select Range(«Таблица1[[#Headers],[№ п.п]]»).Select​Адаптирую под свои​ in 2007-2010, xlsx)​
​ поместить Ваш код​: Уважаемый PATRI0T, в​ КБ, а не​
​ использовать где-либо еще,​ выберете этот параметр,​
​Пример изменения записанного кода​
​Макрос​ пробелов; в качестве​ Basic. Он доступен​ Но сохранение книги​ От вас требуется​ ALT+F8). Появится окно​
​ более-менее правильно ответил​olpit​
​ ActiveWindow.Zoom = 100​ нужны отпишу.​
​ » пишем «51»​ в файл xls,​ приложенном к сообщению​ 9, как если​ этот модуль можно​
​ Excel создаст скрытую​ можно найти в​
​.​ разделителей слов следует​ в большинстве приложений​ с макросами происходит​ организовать данные и​ со списком записанных​ о объяснил:)…П.С.: макрос​: как создать макрос​ ‘Преорбазуем таблицы в​Николай​ и выполняется это​ ошибка 400, новая​ файле макросов нет,​ бы я сохранил​ скопировать в другую​ личную книгу макросов​ статье Начало работы​Внимание:​ использовать знаки подчеркивания.​ Office. Хотя VBA​ несколько иначе, поскольку​ рассчитать показатели, чтобы​​ макросов и кнопками​ слеплен «из того​ на сохранение файла​ диапазоны Dim sh1​: На тестовой книге.​ действие, так? И​
​ книга с копируемым​ зато есть два​ его вручную в​

​ книгу с помощью​ Personal.xlsb (если она​
​ с VBA в​
​ Макросы нельзя отменить. Прежде​ Если используется имя​ позволяет автоматизировать процессы​ необходимо использовать специальный​ произвести еще один​ для управления ими.​
​ что было» и​ с заданным именем,​ As Worksheet Dim​Ошибка в строке​ я так понимаю,​
​ листом создается, но​ «битых» имени книги.​ формат .xls​ редактора Microsoft Visual​

​ еще не существует)​ Excel.​ чем впервые запускать​:)

​ макроса, являющееся ссылкой​​ в приложениях Office​
​ формат файла «с​ ежемесячный отчет. Вы​С помощью макропрограмм можно​ того что выдал​ чтобы имя состояло​:)
​ iObj As ListObject​ActiveWorkbook.SaveAs sfName1, 51​ что RAN своим​ код в модуле​

​ Удалите их через​​И при открытии​ Basic.​ и сохранит макрос​Перед записью макросов полезно​
​ записанный макрос, сохраните​ на ячейку, может​ и между ними,​ поддержкой макросов». Поэтому​ можете записать макрос​ увеличить производительность труда​

​ гугль…поэтому просьба громко​​ из значения заданной​ For Each sh1​При этом сохранение​ кодом вносит изменения​ листа остается.​ «Диспетчер имен» и​ всплывает сообщение «включить​Назначение макроса объекту, фигуре​ в нее. Книги​ знать следующее:​ книгу или создайте​ появиться сообщение об​ вам не нужно​ при попытке сохранить​ для выполнения всех​ пользователя в десятки​
​ не смеятся)))​ яейки и даты,​ In Worksheets For​ новой книги происходит.​
​ в XML? Дальше​А ТС пока​ проблема с открытием​ содержимое».​ или графическому элементу​

​ из этой папки​​Макрос, записанный для работы​ ее копию, чтобы​ ошибке, указывающее на​ уметь программировать или​ макрос Excel предложит​ этих функций, в​ раз. Но чтобы​Файл удален​ например, qwert19102010.xls​ Each iObj In​Вот код.​ — вообще не​ так и молчит​:)

​ должна уйти.​​Что не так?​На листе щелкните правой​ автоматически открываются при​:)​ с диапазоном Excel,​
​ предотвратить внесение нежелательных​ недопустимое имя макроса..​ знать язык VBA,​ два варианта:​ том числе открытие​ использовать запись пользовательских​- велик размер​Заранее спасибо​ sh1.ListObjects iObj.Unlist Next​

​Sub кол_вх() Dim​​ понимаю — ведь​ — из какой​_Igor_61​ Что не удаляется?​ кнопкой мыши объект,​ каждом запуске Excel,​ будет выполняться только​ изменений. Если вас​Чтобы назначить сочетание клавиш​

​ так как все​​Сохранить в виде книги​ и соединение всех​ макросов на все​ — [​R Dmitry​ Next ‘Макрос сохранения​ s As String,​ если открыть файл​ версии ему в​: Да, если это​Вопрос.​ рисунка, фигуры или​ а макросы, сохраненные​ для ячеек этого​:)

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

​ нужные действия выполнит​ с поддержкой макросов​ листов в одну​ 100% следует соблюдать​МОДЕРАТОРЫ​: а поиск или​ книги со старым​

​ fldr As String​​ через WinRAR, там​ xls нужно сохранять​ так, то не​А можно ли​
​ элемент, к которому​ в таких книгах,​ диапазона. Поэтому если​ выполнения макроса, вы​ в поле​ средство записи макросов.​ (XLSM-файл), выбрав​ комбинированную таблицу.​ простые правила, которые​]​ макрорекордер не помогает?​ именем и новым​ fldr = «D:111″​ же куча папок​Юрий М​ удивительно, что у​ сохранить заявку из​ нужно назначить существующий​ указываются в окне​ вы добавите в​ можете закрыть книгу,​Сочетание клавиш​Важно знать, что при​Нет​Используйте кнопки со стрелками​

​ существенно влияют на​​Юрий М​Sub Макрос1()​ расширением xlsx Dim​:)
​ s = Dir(fldr​ и файлов XML,​: $ в имени​ него мой макрос​ этого файла без​ макрос и выберите​ «Макрос» (см. следующий​ диапазон новую строку,​ не сохраняя ее.​введите любую строчную​ записи макроса регистрируются​.​ для управления курсором​ их качество в​: Я же просил:​Dim a$, d$​ sfName1$ Dim sh​ & «*.xls») Do​ т.е. в данном​ переменной — это​ не работает, если​ макросов, не прибегая​ команду​ раздел).​ макрос не будет​Ниже приведены дополнительные сведения​ или прописную букву.​ почти все ваши​Сохранить в виде книги​ (Ctrl + Up,​ момент записи и​При таком Вашем​a = Cells(1,​ As Worksheet, nm​ While s <>​ случае через «51»​ тип (аналог as​ он его в​:)
​ к обращению к​Назначить макрос​Чтобы назначить сочетание клавиш​ применяться к ней.​ о работе с​ Рекомендуется использовать сочетания​ действия. Поэтому если​ без поддержки макросов,​
​ и т.п.). Позиционируйте​ эффективность при выполнении.​ отношении тему покидаю.​ 1) ‘a1 name​ As Name sfName1​:)

​ «» With Workbooks.Open(fldr​​ производятся манипуляции с​ String). Вот табличка​ xls помещает. Но​ объектной модели?​.​
​ для запуска макроса,​
​Если вам нужно записать​
​ макросами в Excel.​
​ клавиш с​
​ вы допустите ошибку,​
​ выбрав​
​ курсор, так чтобы​​vfr800​d = Cells(2,​ = ActiveWorkbook.FullName sfName1​ & s) Dim​ конкретным XML файлом,​ соответствий:​ почему-то он про​Т.к. этот файлик​
​В поле​ в поле​ длинную последовательность задач,​
​Задача​
​CTRL​ например нажмете не​

​Да​
​ вы могли добавить,​5 простых советов, которые​
​: Простите, исправился!Может дадите​ 1) ‘a2 data​
​ = Replace(sfName1, «xlsm»,​ sfName1$, sfName2$ Dim​
​ «51» его находит​Integer — %​
​ этот момент молчит.​ рассылается клиентам, и​
​Назначить макроса​Сочетание клавиш​
​ советуем вместо этого​Описание​
​+​ ту кнопку, средство​
​.​ изменить или удалить​
​ помогут в создании​ последний шанс на​
​ActiveWorkbook.SaveAs Filename:= _​ «xlsx») Application.ScreenUpdating =​
​ sh As Worksheet,​ и выполняет свою​Long — &​ А я решил,​
​ нужно обязательно делать​выберите макрос, который​введите любую строчную​
​ использовать несколько более​Изменение параметров безопасности макросов​SHIFT​ записи макросов зарегистрирует​
​Чтобы сохранить макрос как​ данные внутри таблицы​ макросов без программирования.​ помощь?​»C:» & a​
​ False Application.CopyObjectsWithCells =​ nm As Name​ задачу?​Single — !​

​ что у него​
​ соотв. настройки у​ вы хотите назначить.​

​ или прописную букву.​​ мелких макросов.​ в Excel​, так как они​ это действие. В​ книгу с поддержкой​ по мере необходимости.​ Воспользуйтесь этими простыми​Сварог​ & d &​ False ActiveWorkbook.Sheets(Array(1, 2,​ sfName1 = ActiveWorkbook.FullName​Юрий М​Doble — #​ изначальный файл в​ них..​Назначение макроса кнопке​ Рекомендуется использовать сочетания​В макросе могут содержаться​Сведения о параметрах безопасности​ будут заменять собой​ таком случае можно​ макросов,​Использование мыши для навигации​ советами, которые позволяют​: У меня та​ «.xls»​ 3, 5)).Copy ‘Преобразование​ sfName1 = Replace(sfName1,​: XML тут нет​Currency — @​ xlsm, глядя на​А клиенты разные​Вы можете назначить макрос​ клавиш, которые еще​ и задачи, не​ макросов и их​ совпадающие с ними​ снова записать всю​щелкните​ является более сложным​

​ быстро и просто​​ же ситуация. Жду​End Sub​ формул в значения,​ «xlsm», «xlsx») sfName2​

​ ) Просто заменяем​​String — $​​ картинку​​ и нервные.. Можно​ значку и добавить​ не назначены другим​ относящиеся к Excel.​ значении.​

​ стандартные сочетания клавиш​​ последовательность или изменить​Нет​ и не так​ создавать качественные макропрограммы​ ответа вместе с​

​vfr800​​ не всегда работает​ = Left(sfName1, Len(sfName1)​ длинную строку числом​По поводу строк​LAD​ ли как-то этого​ его на панель​ командам, так как​ Процесс макроса может​Запуск макроса​ в Excel, пока​ код VBA. Поэтому​.​ надежным в момент​
​ автоматически:​ vfr800. А пока​: Доброго времени суток​ корректно, оставил просто​ — 1) Application.ScreenUpdating​ )​ 4 и 5:​

​:​​ избежать?​
​ быстрого доступа или​ они будут переопределять​
​ охватывать прочие приложения​Макросы можно запускать различными​ открыта книга, содержащая​
​ перед записью процесса​В окне​
​ записи. Когда дело​
​Присваивайте макросам короткие, но​
​ полажу в его​
​ всем! Не хотел​ так. For Each​ = False Application.CopyObjectsWithCells​_Igor_61​ сначала получили путь,​Вы копируете лист со​_Igor_61: Можно. Побаловался макрорекордером​ ленту.​

​ совпадающие с ними​​ Office и другие​

​ способами, например с​​ макрос. Например, если​

​ следует хорошо проработать​​Сохранить как​​ доходит до макросов,​​ содержательные имена. Когда​
​ файле.​
​ плодить новую тему,​​ sh In ActiveWorkbook.Worksheets​
​ = False ActiveWorkbook.Sheets(Array(1,​

​: xlOpen​​ а потом в​
​ всеми потрохами. Копируйте​ и у меня​

​Назначение макроса для элемента​​ стандартные сочетания клавиш​ программы, которые поддерживают​
​ помощью сочетания клавиш,​
​ назначить сочетание клавиш​ его. Чем точнее​
​в раскрывающемся списке​
​ использовать мышь лучше​
​ вы войдете вкус,​Макросы позволяют существенно расширить​

​ но поиск тоже​​ sh.UsedRange.Value = sh.UsedRange.Value​
​ 2, 3, 4)).Copy​
​XML​
​ этой строке произвели​ только то, что​
​ получилось​
​ управления на листе​ в Excel, пока​ Visual Basic для​ графического объекта, панели​CTRL+Z​ вы запишете последовательность,​Тип файла​ только для вызова​ со временем вам​ возможности в программе​ прошерстил и не​ Next ‘Удаление именнованных​ For Each sh​Workbook — тогда это​ замену: xlsm заменили​ Вам нужно. Сделайте​PATRI0T​Вы можете назначать макросы​ открыта книга, содержащая​ приложений (VBA). Например,​ быстрого доступа, кнопки​(Отменить), вы не​ тем более эффективно​выберите​ меню.​ придется создавать много​ Excel. Они автоматизируют​ нашел ответа на​ диапазонов показать по​ In ActiveWorkbook.Worksheets sh.UsedRange.Value​ просто указание на​ на xlsx. В​ новый лист и​: Спасибо за ответ​ формам и элементам​ макрос.​ вы можете записать​
​ или даже при​
​ сможете использовать его​ будет работать макрос.​Книга Excel с поддержкой​Держите ваши макросы для​

​ макросов. При выборе​​ рабочие процессы и​
​ свой вопрос. А​
​ ctrl+F3 For Each​ = sh.UsedRange.Value Next​ книгу xlsx 2007-2010,​
​ принципе можно было​

​ на него скопируйте​​Только я ничего​ ActiveX на листе.​В поле​
​ макрос, который сначала​ открытии книги.​ для функции «Отменить»​Макросы и средства VBA​ макросов​ небольших специфичных задач.​ в диалоговом окне​ берут большую часть​ вопрос заключается в​ n In ActiveWorkbook.Names:​ For Each nm​ этим кодом ее​ и в одной​ диапазон ячеек.​ не понял, почему​Открытие редактора Visual Basic​Описание​ обновляет таблицу в​Изменение макроса​ в данном экземпляре​ находятся на вкладке​.​ Чем больше программный​ их легче найти​ рутинной работы пользователя​ следующем: есть файл​ On Error Resume​ In ActiveWorkbook.Names nm.Delete​ открываем?​ строке сделать.​RAN​ у меня не​На вкладке​при необходимости введите​ Excel, а затем​С помощью редактора Visual​ Excel.​Разработчик​Нажмите кнопку​ код в макросе,​ с короткими и​ на себя. Просто​ А.xls в директории​ Next n.Delete: Next​ Next Application.DisplayAlerts =​Юрий М​51 и 56​: _Igor_61, Вставьте это​ работает. Вроде код​Разработчик​ краткое описание действий​ открывает Outlook для​ Basic можно изменять​В списке​, которая по умолчанию​Сохранить​ тем медленнее он​ содержательными названиями. Система​ нужно научится пользоваться​ «C:Папка1″…в файле запускается​ Application.DisplayAlerts = False​ False ActiveWorkbook.SaveAs sfName1,​: Нет, открываем по​ — это константы​ в модуль копируемого​ такой же​щелкните​ макроса.​ ее отправки по​ макросы, присоединенные к​Сохранить в​ скрыта, поэтому сначала​.​ работает, особенно если​ VBA предоставляет вам​ макросами и производительность​ макрос, который открывает​ ActiveWorkbook.SaveAs sfName1, 51​ 51 ActiveWorkbook.Close False​ имени, а это​ типов файлов.​ листа, и вау​А зачем это?​Visual Basic​Хотя это необязательная в​ электронной почте.​ книге.​выберите книгу, в​ нужно включить ее.​Чтобы макросы были доступны​ это требуется для​ возможность указать описание​ труда возрастет в​ и изменяет файл​ ActiveWorkbook.Close False Application.DisplayAlerts​ Workbooks.Open sfName1 ActiveWorkbook.SaveAs​
​ указание ТИПА файла​===​ съедят мыши.​

​ Kill Addr &​​или выберите​ поле Описание, рекомендуется​Макросы и средства VBA​

planetaexcel.ru

Сохранить макрос в Excel 2013 (Иное/Other)

​Копирование модуля макроса в​​ которой вы хотите​
​ Дополнительные сведения см.​ при каждом запуске​ выполнения многих функций​ к имени. Обязательно​ десятки раз!​ В.xls и после​ = True Application.CopyObjectsWithCells​ sfName2, 56 ActiveWorkbook.Close​ — книга без​// константы форматов​
​Sub Мяу() Dim​ «Файл без макросов​Сервис​ введите один. Полезно​ находятся на вкладке​ другую книгу​ сохранить макрос.​ в статье Отображение​
​ Excel, создайте их​
​ или рассчитать много​ используйте ее.​Вам даже не нужно​

​ внесенных изменений файл​​ = True ‘Закрываем​​ False Kill sfName1​​ макросов.​ 2003​ sfName1$, sfName2$ Dim​
​ 2007.xlsx​>​ введите понятное описание​Разработчик​
​Если книга содержит макрос​Как правило, макросы сохраняются​ вкладки «Разработчик».​ в книге «Personal.xlsb».​ формул в большой​Имя макроса обязательно должно​
​ быть программистом и​​ B.xls нужно сохранить​ книгу с сохранением​ Application.DisplayAlerts = True​

​_Igor_61​​// xlCSVWindows = 23;​​ sh As Worksheet,​​Александр П.​

excelworld.ru

как создать макрос на сохранение файла с заданным именем

​Макрос​​ сведениями, которые могут​, которая по умолчанию​ VBA, который нужно​ в расположении​Перед записью макросов полезно​ Это скрытая книга​ электронной таблице.​
​ начинаться с букв​

​ знать язык программирования​​ в «C:Папка2» с​ изменений ActiveWorkbook.Close False​

​ Application.CopyObjectsWithCells = True​
​: А, кажется понял:​
​// xlDBF2 =​ nm As Name​
​: PATRI0T, Код ниже​>​
​ быть полезны для​
​ скрыта, поэтому сначала​ использовать где-либо еще,​Эта книга​
​ знать следующее:​

​ на вашем компьютере,​​Если вы запустите каждый​ и не может​ «VBA» чтобы создавать​ именем 1.xls, при​ ‘если поставить False​ .Close 0 End​ ActiveWorkbook.SaveAs sfName1, 51​ 7;​ sfName1 = ThisWorkbook.FullName​ удаляет весь код​Редактор Visual Basic​ вас или других​ нужно включить ее.​ этот модуль можно​, но если вы​Макрос, записанный для работы​ которая открывается при​ процесс отдельно, вы​ содержать пробелы, символы​ свои макро-программы с​ чем у меня​ — книга будет​ With s =​ — сохраняем активную​// xlDBF3 =​ sfName1 = Replace(sfName1,​ во всех модулях​.​ пользователей, которые будут​Выберите​ скопировать в другую​ хотите, чтобы макрос​ с диапазоном Excel,​ каждом запуске Excel.​ можете быстро просмотреть​ или знаки препинания.​ помощью инструмента записи​ проблемма с циклом.​ закрыта без сохранения​ Dir Loop End​ книгу с заданным​ 8;​

​ «xlsm», «xlsx») sfName2​​ активной книги.​Поиск справки по использованию​ выполняться макрос. При​Excel​ книгу с помощью​

​ был всегда доступен​​ будет выполняться только​ Для получения сведений​ результаты для проверки​ После первого символа,​ макросов.​ Его нужно написать​ sFiles = Dir​ Sub​ именем (sfName1) в​

​// xlDBF4 =​​ = Left(sfName1, Len(sfName1)​Sub test() Set​ редактора Visual Basic​ создании много макросы,​>​ редактора Microsoft Visual​ при работе в​ для ячеек этого​ о выполнении этих​

​ точности их выполнения.​​ вы можете использовать​Сначала надо включить панель​ таким образом чтоб​ Loop ‘возвращаем ранее​И скрин ошибки.​ xlsx (xlOpenXMLWorkbook (without​ 11;​ — 1) Application.ScreenUpdating​ VBComp = ActiveWorkbook.VBProject.VBComponents​Узнайте, как найти справку​ описание помогут вам​Параметры​ Basic.​ Excel, выберите пункт​ диапазона. Поэтому если​ действий см. статью​Если нельзя разбить длинный​ больше букв, цифр​ разработчика. Для этого​ в «C:Папка2» файлы​ отключенное обновление экрана​
​Файла Книга1.xls в​​ macro’s in 2007-2010,​// xlDIF =​​ = False Application.CopyObjectsWithCells​​ For Each cl​

​ по элементам Visual​​ быстро определять, какие​
​>​Назначение макроса объекту, фигуре​

​ Личная книга макросов.​​ вы добавите в​ Создание и сохранение​ макрос на короткие​

​ или нижнее подчеркивание,​​ в меню «Файл»​ были именно с​ Application.ScreenUpdating = True​ каталоге НЕТ. Прикрепленные​ xlsx) . И​ 9;​

planetaexcel.ru

Как работать с макросами в Excel 2010 без программирования кода

​ = False Sheets(Array(1,​ In VBComp cl.CodeModule.DeleteLines​ Basic.​ макрос по исполнителям,​Лента и панель​ или графическому элементу​ Если выбрать этот​ диапазон новую строку,​ всех макросов в​ приложения, а требуется​ но максимальная длина​

​ открываем группу опций​ именами 1.xls…2.xls…99.xls(файлов около​ .Label1.Caption = «ГОТОВО»​ файлы 2017-10-07_214428.png (3.53​ равнозначно — можно​// xlExcel9795 =​ 3)).Copy For Each​

​ 1, cl.CodeModule.CountOfLines Next​PATRI0T​ в противном случае​.​На листе щелкните правой​ вариант, Excel создаст​ макрос не будет​ одной книге.​ проверить его функциональность​ имени составляет 80​ «Параметры». В появившемся​ 100шт.)Подскажите плиз как​ End With End​ КБ)​ записать текстом «xlOpenXMLWorkbook​

Панель разработчика.

​ 43;​ sh In ActiveWorkbook.Worksheets​ End Sub​: Добрый день.​ может потребоваться угадать.​В категории​ кнопкой мыши объект,​

Применение VBA и макросов в Microsoft Excel

​ скрытую личную книгу​ применяться к ней.​Примечание:​ пошагово («отладкой»). Нажмите​ символов.​ окне «Параметры Excel»​ правильно реализовать такой​ Sub​Николай​ (without macro’s in​// xlTextWindows =​ sh.UsedRange.Value = sh.UsedRange.Value​

​_Igor_61​В Excel сделал​Чтобы начать запись макроса,​Настроить ленту​ рисунка, фигуры или​ макросов Personal.xlsb (если​Если вам нужно записать​ Мы стараемся как можно​ клавишу F8 каждый​Абсолютный адрес ячейки –​ открываем группу «Настройка​ цикл макросом?В VBA​

​Огромная благодарность RAN,​: Опа.​ 2007-2010, xlsx», а​

  1. ​ 20;​ Next For Each​Запись макроса.
  2. ​: Покажите Ваш файл​ небольшую форму для​ нажмите кнопку​Параметры.
  3. ​в списке​ элемент, к которому​ она еще не​ длинную последовательность задач,​Остановить запись.
  4. ​ оперативнее обеспечивать вас​ раз, когда вы​ это точное местонахождение​ ленты». Обратите внимание​ не силен, а​ за его код​Удаление строк​ можно «51». Я​Список макросов.

​// xlUnicodeText =​ nm In ActiveWorkbook.Names​ с кодом, который​ приема заказов на​ОК​Основные вкладки​ нужно назначить существующий​ существует) и сохранит​ советуем вместо этого​ актуальными справочными материалами​ хотите перейти к​ курсора, когда информация​

​ на правую колонку​

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

​ штопаю макросы макроредактором(а​ сохранения файлов.​Workbooks.Open sfName1 ActiveWorkbook.SaveAs​ правильно понимаю?​ 42;​ nm.Delete Next Application.DisplayAlerts​ не работает. Смею​ мебельном производстве.​

1 Правильные имена в макросах.

​.​установите флажок​ макрос и выберите​ макрос в ней.​ использовать несколько более​ на вашем языке.​ следующему шагу выполнения​ о его размещении​ настроек под аналогичным​ там жесткая привязка​LAD​ sfName2, 56 ActiveWorkbook.Close​Простите за навязчивость,​// xlWebArchive =​

​ = False ActiveWorkbook.SaveAs​ предположить, что Вы​И потом заявку​Выполните действия, которые нужно​Разработчик​ команду​В поле​ мелких макросов.​ Эта страница переведена​ задачи. Процесс выполнения​ записывается в макро-адреса​ названием «Настройка ленты».​

2 Используйте относительные (не абсолютные) адреса ячеек

​ к именам файлов​: Не думал, что​ False Kill sfName1​ просто хочу правильно​ 45;​ sfName1, 51 ActiveWorkbook.Close​ что-то не так​ нужно сохранить в​ записать.​, а затем нажмите​Назначить макрос​Описание​В макросе могут содержаться​ автоматически, поэтому ее​ программы останавливается, когда​ с жесткой привязкой​ В ней следует​ и книг), поэтому​

​ можно так сильно​Решило проблему.​ все уяснить для​// xlXMLSpreadsheet =​ False Workbooks.Open sfName1​ или не туда​ отдельном .xls файле​На вкладке​ кнопку​

Относительные ссылки.

3 Всегда начинайте запись с курсором в A1

​.​при необходимости введите​ и задачи, не​ текст может содержать​ он видит ошибку.​ к конкретной ячейке​ отметить галочкой опцию​ с синтаксисом написания​ извратить.​Николай​ себя, чтобы все​ 46;​ ActiveWorkbook.SaveAs sfName2, 56​ вставили или что-то​ , для импорта​Разработчик​Сохранить​В поле​ краткое описание действий​ относящиеся к Excel.​ неточности и грамматические​ Вы можете исправить​ в момент записи.​ «Разработчик» как показано​ кода не дружу…огромная​

​iilfat​: Вот как стал​ правильно понимать и​// xlXMLData =​ ActiveWorkbook.Close False Kill​ не так сделали,​ в другую программу.​щелкните​.​Назначить макроса​ макроса.​ Процесс макроса может​ ошибки. Для нас​ ошибку, которую легко​ Абсолютные адреса ограничивают​ ниже на рисунке:​

4 Всегда перемещаться с клавиш направления в момент записи макроса

​ просьба помочь ну​: Здравствуйте.​ выглядеть код в​ в дальнейшем правильно​ 47;​ sfName1 Application.DisplayAlerts =​ а так же​Код макроса содержится​Остановить запись​

​Чтобы записать макрос, следуйте​выберите макрос, который​Хотя поле «Описание» является​ охватывать прочие приложения​ важно, чтобы эта​ найти с помощью​ возможности макроса, если​Теперь нам доступна на​ или хоть указать​

5 Создавайте макросы для конкретных небольших задач

​Как в Excel​ итоге.​ использовать, если понадобится​// основные константы​ True Application.CopyObjectsWithCells =​ невнимательно посмотрели код,​ на листе +​.​ инструкциям ниже.​ вы хотите назначить.​ необязательным, рекомендуется его​

​ Office и другие​ статья была вам​ «отладки» или записать​ будут добавляться /​ ленте новая закладка​

​ направление в каком​ сохранить макрос? Я​Sub Микро_на_сдачу() Dim​Николай​ 2007​ True End Sub​ иначе не возникло​ отдельный модуль…​На вкладке​На вкладке​Назначение макроса кнопке​ заполнить. Кроме того,​ программы, которые поддерживают​ полезна. Просим вас​ по-новому.​ удаляться данные на​ «Разработчик» со всеми​

exceltable.com

​ искать!С нетерпением жду​

Введение

Всем нам приходится — кому реже, кому чаще — повторять одни и те же действия и операции в Excel. Любая офисная работа предполагает некую «рутинную составляющую» — одни и те же еженедельные отчеты, одни и те же действия по обработке поступивших данных, заполнение однообразных таблиц или бланков и т.д. Использование макросов и пользовательских функций позволяет автоматизировать эти операции, перекладывая монотонную однообразную работу на плечи Excel. Другим поводом для использования макросов в вашей работе может стать необходимость добавить в Microsoft Excel недостающие, но нужные вам функции. Например функцию сборки данных с разных листов на один итоговый лист, разнесения данных обратно, вывод суммы прописью и т.д.

Макрос — это запрограммированная последовательность действий (программа, процедура), записанная на языке программирования Visual Basic for Applications (VBA). Мы можем запускать макрос сколько угодно раз, заставляя Excel выполнять последовательность любых  нужных нам действий, которые нам не хочется выполнять вручную.

В принципе, существует великое множество языков программирования (Pascal, Fortran, C++, C#, Java, ASP, PHP…), но для всех программ пакета Microsoft Office стандартом является именно встроенный язык VBA. Команды этого языка понимает любое офисное приложение, будь то Excel, Word, Outlook или Access.

Способ 1. Создание макросов в редакторе Visual Basic

Для ввода команд и формирования программы, т.е. создания макроса необходимо открыть специальное окно — редактор программ на VBA, встроенный в Microsoft Excel.

  • В старых версиях (Excel 2003 и старше) для этого идем в меню Сервис — Макрос — Редактор Visual Basic (Toos — Macro — Visual Basic Editor).
  • В новых версиях (Excel 2007 и новее) для этого нужно сначала отобразить вкладку Разработчик (Developer). Выбираем Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon) и включаем в правой части окна флажок Разработчик (Developer). Теперь на появившейся вкладке нам будут доступны основные инструменты для работы с макросами, в том числе и нужная нам кнопка Редактор Visual Basic (Visual Basic Editor)



    macro1.png:

К сожалению, интерфейс редактора VBA и файлы справки не переводятся компанией  Microsoft на русский язык, поэтому с английскими командами в меню и окнах придется смириться:

macro2.png

Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:

  • Обычные модули — используются в большинстве случаев, когда речь идет о макросах. Для создания такого модуля выберите в меню Insert — Module. В появившееся окно нового пустого модуля можно вводить команды на VBA, набирая их с клавиатуры или копируя их из другого модуля, с этого сайта или еще откуда нибудь:

    macro3.png

  • Модуль Эта книга — также виден в левом верхнем углу редактора Visual Basic в окне, которое называется Project Explorer. В этот модуль обычно записываются макросы, которые должны выполнятся при наступлении каких-либо событий в книге (открытие или сохранение книги, печать файла и т.п.):

    macro4.png

  • Модуль листа — доступен через Project Explorer и через контекстное меню листа, т.е. правой кнопкой мыши по ярлычку листа — команда Исходный текст (View Source). Сюда записывают макросы, которые должны выполняться при наступлении определенных событий на листе (изменение данных в ячейках, пересчет листа, копирование или удаление листа и т.д.)

    macro5.png

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

macro6.png

Давайте разберем приведенный выше в качестве примера макрос Zamena:

  • Любой макрос должен начинаться с оператора Sub, за которым идет имя макроса и список аргументов (входных значений) в скобках. Если аргументов нет, то скобки надо оставить пустыми.
  • Любой макрос должен заканчиваться оператором End Sub.
  • Все, что находится между Sub и End Sub — тело макроса, т.е. команды, которые будут выполняться при запуске макроса. В данном случае макрос выделяет ячейку заливает выделенных диапазон (Selection) желтым цветом (код = 6) и затем проходит в цикле по всем ячейкам, заменяя формулы на значения. В конце выводится окно сообщения (MsgBox).

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

Способ 2. Запись макросов макрорекордером

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

  • Макрорекордер записывает только те действия, которые выполняются в пределах окна Microsoft Excel. Как только вы закрываете Excel или переключаетесь в другую программу — запись останавливается.
  • Макрорекордер может записать только те действия, для которых есть команды меню или кнопки в Excel. Программист же может написать макрос, который делает то, что Excel никогда не умел (сортировку по цвету, например или что-то подобное).
  • Если во время записи макроса макрорекордером вы ошиблись — ошибка будет записана. Однако смело можете давить на кнопку отмены последнего действия (Undo) — во время записи макроса макрорекордером она не просто возрвращает Вас в предыдущее состояние, но и стирает последнюю записанную команду на VBA.

Чтобы включить запись необходимо:

  • в Excel 2003 и старше — выбрать в меню Сервис — Макрос — Начать запись (Tools — Macro — Record New Macro)
  • в Excel 2007 и новее — нажать кнопку Запись макроса (Record macro) на вкладке Разработчик (Developer)

Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:

macro7.png

  • Имя макроса — подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
  • Сочетание клавиш — будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис — Макрос — Макросы — Выполнить (Tools — Macro — Macros — Run) или с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или нажав ALT+F8.
  • Сохранить в… — здесь задается место, куда будет сохранен текст макроса, т.е. набор команд на VBA из которых и состоит макрос.:
    • Эта книга — макрос сохраняется в модуль текущей книги и, как следствие, будет выполнятся только пока эта книга открыта в Excel
    • Новая книга — макрос сохраняется в шаблон, на основе которого создается любая новая пустая книга в Excel, т.е. макрос будет содержаться во всех новых книгах, создаваемых на данном компьютере начиная с текущего момента
    • Личная книга макросов — это специальная книга Excel  с именем Personal.xls, которая используется как хранилище макросов. Все макросы из Personal.xls загружаются в память при старте Excel и могут быть запущены в любой момент и в любой книге.

После включения записи и выполнения действий, которые необходимо записать, запись можно остановить командой Остановить запись (Stop Recording).

Запуск и редактирование макросов

Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или — в старых версиях Excel — через меню Сервис — Макрос — Макросы (Tools — Macro — Macros):

macro8.png

  • Любой выделенный в списке макрос можно запустить кнопкой Выполнить (Run).
  • Кнопка Параметры (Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
  • Кнопка Изменить (Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.

Создание кнопки для запуска макросов

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

Кнопка на панели инструментов в Excel 2003 и старше

Откройте меню Сервис — Настройка (Tools — Customize) и перейдите на вкладку Команды (Commands). В категории Макросы легко найти веселый желтый «колобок» — Настраиваемую кнопку (Custom button):

macro9.gif

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

macro10.gif

Кнопка на панели быстрого доступа в Excel 2007 и новее

Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar):

macro11.png

Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:

macro12.png

Кнопка на листе

Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:

  • В Excel 2003 и старше — откройте панель инструментов Формы через меню Вид — Панели инструментов — Формы (View — Toolbars — Forms)
  • В Excel 2007 и новее — откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer) 

Выберите объект Кнопка (Button):

macro13.png

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

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

Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция — только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).

Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert — Module и введем туда текст нашей функции:

macro14.png

Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка — Функция) в категории Определенные пользователем (User Defined):

macro15.png

После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:

macro16.png

Макросы позволяют существенно расширить возможности в программе Excel. Они автоматизируют рабочие процессы и берут большую часть рутинной работы пользователя на себя. Просто нужно научится пользоваться макросами и производительность труда возрастет в десятки раз!

Вам даже не нужно быть программистом и знать язык программирования «VBA» чтобы создавать свои макро-программы с помощью инструмента записи макросов.

Сначала надо включить панель разработчика. Для этого в меню «Файл» открываем группу опций «Параметры». В появившемся окне «Параметры Excel» открываем группу «Настройка ленты». Обратите внимание на правую колонку настроек под аналогичным названием «Настройка ленты». В ней следует отметить галочкой опцию «Разработчик» как показано ниже на рисунке:

Панель разработчика.

Теперь нам доступна на ленте новая закладка «Разработчик» со всеми своими инструментами для автоматизации работы в Excel и создания макросов.

Применение VBA и макросов в Microsoft Excel

Макросы – это внутренние приложения, которые берут на себя всю рутинную работу, облегчая жизнь пользователю. Каждый пользователь может создать макрос без знания языков программирования. Для этого существует макрорекодер, который запускается с помощью кнопки «Запись макроса».

В этом режиме все действия пользователя макрорекодер в Excel записывает, переводя на язык программирования VBA-код в автоматическом режиме. После завершения записи мы получаем готовую программу, которая сама выполняет те действия, которые выполнял пользователь при записи.

Как записать готовый макрос в Excel? Очень просто:

  1. На вкладке «Разработчик» нажимаем кнопку «Запись макроса».
  2. Запись макроса.

  3. В появившимся диалоговом окне заполняем параметры макроса. И нажимаем «ОК».
  4. Параметры.

  5. После завершения нажимаем на кнопку «Остановить запись», после чего макрос будет автоматически сохранен.
  6. Остановить запись.

  7. Для выполнения или редактирования записанного макроса нажимаем на кнопку «Макросы» (или комбинацию клавиш ALT+F8). Появится окно со списком записанных макросов и кнопками для управления ими.
  8. Список макросов.

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



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

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

1 Правильные имена в макросах.

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

Имя макроса обязательно должно начинаться с букв и не может содержать пробелы, символы или знаки препинания. После первого символа, вы можете использовать больше букв, цифр или нижнее подчеркивание, но максимальная длина имени составляет 80 символов.

2 Используйте относительные (не абсолютные) адреса ячеек

Абсолютный адрес ячейки – это точное местонахождение курсора, когда информация о его размещении записывается в макро-адреса с жесткой привязкой к конкретной ячейке в момент записи. Абсолютные адреса ограничивают возможности макроса, если будут добавляться / удаляться данные на листе Excel или список данных будет становиться больше. Относительные средства не привязывают курсор к конкретному адресу ячейки.

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

Относительные ссылки.

3 Всегда начинайте запись с курсором в A1

Абсолютный отсчет ячеек, всегда ведется с исходного положения (адрес ячейки А1) – до адреса курсора с вашими данными. Если вы сохранили ваш макрос в книге личных макросов (рекомендуется так и делать), то вы можете использовать свою программу на других листах с аналогичными данными. Независимо от того, где ваш курсор позиционируется, когда вы начинаете запись макроса! Даже если он уже находится в ячейке A1, ваш первый макрос лучше записывать после нажатия клавиш должны быть Ctrl + Home.

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

4 Всегда перемещаться с клавиш направления в момент записи макроса

Используйте кнопки со стрелками для управления курсором (Ctrl + Up, и т.п.). Позиционируйте курсор, так чтобы вы могли добавить, изменить или удалить данные внутри таблицы по мере необходимости.

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

5 Создавайте макросы для конкретных небольших задач

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

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

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

Понравилась статья? Поделить с друзьями:
  • Excel 2010 как соединить ячейки
  • Excel 2010 как снять защиту книги в excel
  • Excel 2010 как разделить лист
  • Excel 2010 как проценты
  • Excel 2010 как протянуть формулу