Макрос для вставки макроса в excel

1. Экспорт модуля проекта в файл
2. Импорт модуля проекта из файла
3. Импорт модуля через организатор(данный код только для Word приложения)
4. Вставка новых строк в модуль проекта

5. Удаление строк из модуля
6. Чтение строк из модуля
7. Определение количества строк в модуле
8. Переименование модулей проекта
9. Удаление модулей проекта
10. Определение количества модулей в проекте
11. Создание нового модуля проекта

Обработка модулей VBA программно

Под «ИмяПроекта» в программной конструкции подразумевается соответствующий объект. Для связи с книгой Excel предназначен объект — Workbooks(«Имя книги»), а для связи с документом Word объект — Documents(“Имя документа”). Объект для связи с документом, который содержит общие макросы приложения Word, имеет имя: NormalTemplate, в Excel приложении данный объект записывается следующим образом: Workbooks(«PERSONAL»).

Экспорт модуля проекта в файл

Visual Basic
1
ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").Export "Путь и ИмяФайла"

Импорт модуля проекта из файла

Visual Basic
1
ИмяПроекта.VBProject.VBComponents.Import  "Путь и ИмяФайла"

Импорт модуля через организатор(данный код только для Word приложения)

Visual Basic
1
2
3
Application.OrganizerCopy Source:= "Путь и имя проекта откуда берется модуль", Destination:= _
"Путь и имя проекта куда импортируется модуль", Name:="Имя модуля", Object _
:=wdOrganizerObjectProjectItems

Вставка новых строк в модуль проекта

Visual Basic
1
ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").CodeModule.InsertLines  №, S

Где
№ — Номер строки в модуле с которой будут вставляться новые строки
S – Вставляемая строка символов

Примечание:
В переменной S могут содержаться коды символов конца строк , которые можно получить следующей функцией со следующим аргументом: CHR(13). Таким образом, переменная S может содержать в себе сразу несколько строк:

Visual Basic
1
S = "Первая строка"+ chr(13)+ "Вторая строка" + chr(13)+ "Третья строка"  'и т.д.

Удаление строк из модуля

Visual Basic
1
ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").CodeModule.DeleteLines(№,Количество)

Где
№ — Номер строки в модуле с которой будут удаляться строки
Количество – количество удаляемых строк

Чтение строк из модуля

Visual Basic
1
ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").CodeModule.Lines(№,Количество)

Где
№ — Номер строки в модуле с которой будут начинаться чтение строк
Количество – количество читаемых строк

Определение количества строк в модуле

Visual Basic
1
ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").CodeModule.CountOfLines

Переименование модулей проекта

Visual Basic
1
ИмяПроекта.VBProject.VBComponents.Item("ИмяМодуля").Name ="Новое имя модуля"

Удаление модулей проекта

Visual Basic
1
2
ИмяПроекта.VBProject.VBComponents.Remove  _
ИмяПроекта.VBProject.VBComponents.Item("ИмяМодуля")

Определение количества модулей в проекте

Visual Basic
1
ИмяПроекта.VBProject.VBComponents.Count

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

Visual Basic
1
2
3
4
5
6
'Создаем новый модуль макросов и подпрограмм
ИмяПроекта.VBProject.VBComponents.Add vbext_ct_StdModule
'Определяем индекс созданного модуля
k = ИмяПроекта.VBProject.VBComponents.Count
'даем свое имя модулю
ИмяПроекта.VBProject.VBComponents.Item(k).Name = "Новое имя модуля"

Добавлено через 9 часов 25 минут

Смотрю кое-кому понравилось . Тогда добавлю:
Много расширенных примеров есть на Cpearson

При объявлении переменных будет ругаться на неизвестный тип данных:
— подключаем Microsoft Visual Basic For Applications Extensibility library (Tools -> Preferences).
Отсюда беруться и некоторые константы.

Также потребуется

открыть доверенный программный доступ к VBE:

2007-2010: 1) Файл -> Параметры -> Центр управления безопасностью -> Параметры центра управления безопасностью -> Доверять доступ к объектной модели проектов VBA.
Альтернативно:
2а) Кнопка «Office» (файл) -> Параметры –> (меню «Основные» -> поле «Основные параметры работы с Excel») Настройка ленты -> галочка «Показывать вкладку «Разработчик» на ленте (в правом окне).
2б) Панель «Разработчик» -> группа «Код» -> Безопасность макросов -> меню «Параметры макросов» -> поле «Параметры макросов для разработчика» -> Доверять доступ к объектной модели проектов VBA.
2003: Сервис > Макрос > Безопасность… > Надежные издатели (вкладка) > Доверять досутуп к Visual Basic Project.

Либо твик:

Visual Basic
1
2
3
4
5
6
Sub Enable_AccessVBOM() ' включает программный доступ к объектной модели проекта VBA
    On Error Resume Next
     Key$ = "HKEY_CURRENT_USERSoftwareMicrosoftOffice" & Application.Version & _
            "ExcelSecurityAccessVBOM"
     CreateObject("WScript.Shell").RegWrite Key$, 1, "REG_DWORD"
End Sub

Код по вставке модуля в активную книгу. В примере модуль находится на Рабочем столе и представляет из себя файл с расширением bas. Файл с модулем можно получить так:

  1. перейдите в VBA;
  2. щ. по модулю, который надо сохранить в виде файла;
  3. FileImport File….

Visual BasicВыделить код

Sub Procedure_1()

    ‘Здесь нужно указать, где находится файл с модулем.

   Const sFileName As String = «C:Documents and SettingsПользовательРабочий столModule2.bas»

    ‘Добавление модуля в активную книгу.

   ActiveWorkbook.VBProject.VBComponents.Import Filename:=sFileName

End Sub

Visual BasicВыделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Const z As String = vbNewLine
 
Dim n As Integer: n = 20
 
' -------------------------------------------------------------------
' --- в модуль "ЭтаКнига" -------------------------------------------
Dim s As String
s = ""
s = s & "Option Explicit" & z & z
 
s = s & "Private Sub Workbook_Open()" & z & z
 
s = s & "    If Environ(""UserName"") = ""pupkin"" Then" & z
s = s & "        Cells(1, " & n & ").EntireColumn.Hidden = False" & z
s = s & "    End If" & z
s = s & "End Sub"
 
Dim vbComp As VBComponent
Set vbComp = ThisWorkbook.VBProject.VBComponents("ЭтаКнига")
 
With vbComp.CodeModule
    .InsertLines .CountOfLines + 1, s
End With
 
Set vbComp = Nothing
' --- в модуль "ЭтаКнига" -------------------------------------------
' ----------------

1. Экспорт модуля проекта в файл
2. Импорт модуля проекта из файла
3. Импорт модуля через организатор(данный код только для Word приложения)
4. Вставка новых строк в модуль проекта

5. Удаление строк из модуля
6. Чтение строк из модуля
7. Определение количества строк в модуле
8. Переименование модулей проекта
9. Удаление модулей проекта
10. Определение количества модулей в проекте
11. Создание нового модуля проекта

Обработка модулей VBA программно

Под

«ИмяПроекта» в программной конструкции подразумевается соответствующий объект. Для связи с книгой Excel предназначен объект — Workbooks(«Имя книги»), а для связи с документом Word объект — Documents(“Имя документа”). Объект для связи с документом, который содержит общие макросы приложения Word, имеет имя: NormalTemplate, в Excel приложении данный объект записывается следующим образом: Workbooks(«PERSONAL»). Экспорт модуля проекта в файл

Visual BasicВыделить код

1

ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).Export «Путь и ИмяФайла»

Импорт модуля проекта из файла

Visual BasicВыделить код

1

ИмяПроекта.VBProject.VBComponents.Import  «Путь и ИмяФайла»

Импорт модуля через организатор(данный код только для Word приложения)

Visual BasicВыделить код

1

2

3

Application.OrganizerCopy Source:= «Путь и имя проекта откуда берется модуль», Destination:= _

«Путь и имя проекта куда импортируется модуль», Name:=»Имя модуля», Object _

:=wdOrganizerObjectProjectItems

Вставка новых строк в модуль проекта

Visual BasicВыделить код

1

ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).CodeModule.InsertLines  №, S

Где
№ — Номер строки в модуле с которой будут вставляться новые строки
S – Вставляемая строка символов
Примечание:
В переменной S могут содержаться коды символов конца строк , которые можно получить следующей функцией со следующим аргументом: CHR(13). Таким образом, переменная S может содержать в себе сразу несколько строк:

Visual BasicВыделить код

1

S = «Первая строка»+ chr(13)+ «Вторая строка» + chr(13)+ «Третья строка»  ‘и т.д.

Удаление строк из модуля

Visual BasicВыделить код

1

ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).CodeModule.DeleteLines(№,Количество)

Где
№ — Номер строки в модуле с которой будут удаляться строки
Количество – количество удаляемых строк
Чтение строк из модуля

Visual BasicВыделить код

1

ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).CodeModule.Lines(№,Количество)

Где
№ — Номер строки в модуле с которой будут начинаться чтение строк
Количество – количество читаемых строк
Определение количества строк в модуле

Visual BasicВыделить код

1

ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).CodeModule.CountOfLines

Переименование модулей проекта

Visual BasicВыделить код

1

ИмяПроекта.VBProject.VBComponents.Item(«ИмяМодуля»).Name =»Новое имя модуля»

Удаление модулей проекта

Visual BasicВыделить код

1

2

ИмяПроекта.VBProject.VBComponents.Remove  _

ИмяПроекта.VBProject.VBComponents.Item(«ИмяМодуля»)

Определение количества модулей в проекте

Visual BasicВыделить код

1

ИмяПроекта.VBProject.VBComponents.Count

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

Visual BasicВыделить код

1

2

3

4

5

6

‘Создаем новый модуль макросов и подпрограмм

ИмяПроекта.VBProject.VBComponents.Add vbext_ct_StdModule

‘Определяем индекс созданного модуля

k = ИмяПроекта.VBProject.VBComponents.Count

‘даем свое имя модулю

ИмяПроекта.VBProject.VBComponents.Item(k).Name = «Новое имя модуля»

Добавлено через 9 часов 25 минут

Смотрю кое-кому понравилось

. Тогда добавлю:
Много расширенных примеров есть на
Cpearson

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

Microsoft Visual Basic For Applications Extensibility library (Tools -> Preferences).
Отсюда беруться и некоторые константы.
Также потребуется

открыть доверенный программный доступ к VBE:


2007-2010: 1) Файл -> Параметры -> Центр управления безопасностью -> Параметры центра управления безопасностью -> Доверять доступ к объектной модели проектов VBA.
Альтернативно:
2а) Кнопка «Office» (файл) -> Параметры –> (меню «Основные» -> поле «Основные параметры работы с Excel») Настройка ленты -> галочка «Показывать вкладку «Разработчик» на ленте (в правом окне).
2б) Панель «Разработчик» -> группа «Код» -> Безопасность макросов -> меню «Параметры макросов» -> поле «Параметры макросов для разработчика» -> Доверять доступ к объектной модели проектов VBA.
2003: Сервис > Макрос > Безопасность… > Надежные издатели (вкладка) > Доверять досутуп к Visual Basic Project.

Либо твик:

Visual BasicВыделить код

1

2

3

4

5

6

Sub Enable_AccessVBOM() ‘ включает программный доступ к объектной модели проекта VBA

   On Error Resume Next

     Key$ = «HKEY_CURRENT_USERSoftwareMicrosoftOffice» & Application.Version & _

            «ExcelSecurityAccessVBOM»

     CreateObject(«WScript.Shell»).RegWrite Key$, 1, «REG_DWORD»

End Sub

15

Как проверить наличие модуля

Попробуй проверить через возникновения ошибки:

Visual BasicВыделить код

1
2
3
4
5
function IsModuleW(NameModule) as boolen
On error resume next
set PrMod=NormalTemplate.VBProject.VBComponents.Item(NameModule)
If err=0 then IsModulesW=true: else: IsModulesW=false:
end function

Упс нашел,

Visual BasicВыделить код

1
2
3
4
5
6
on error resume next
if NormalTemplate.VBProject.VBComponents.Item("Module1") Is Nothing then
   'если работает
else
   'если не работает
end if

Visual BasicВыделить код

1
2
3
4
5
6
7
8
9
10
11
Sub QWERT()
Debug.Print IsModul("Module1")
End Sub
Function IsModul(N)
Dim Q
IsModul = False
On Error GoTo 1
Set Q = NormalTemplate.VBProject.VBComponents.Item(N)
IsModul = True
1
End Function

У меня другая интерпритация:

Visual BasicВыделить код

1
2
3
4
5
6
7
8
 Function IsModul(N)
Dim Q 'объявляем переменную
IsModul = False ' назначаем значение функции на случай ошибки
On Error GoTo 1 ' говорим компилятору что делать в случае возникновения ошибки
Set Q = NormalTemplate.VBProject.VBComponents.Item(N) ' пытаемся назначить переменной модуль
IsModul = True ' если получилось значение функции "ДА"
1 ' если назначить не получилось из-за отсутствия компилятор перходит из строки с ошибкой сюда пропуская назначение "Да"
End Function

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

Файлы для скачивания:

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

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

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

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

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

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

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

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

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

Я не вижу окна «Project — VBA Project».

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Важно:

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

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

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

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

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

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

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

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

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

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

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

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

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

Содержание

  1. Как записать макрос
  2. Как добавить готовый макрос в рабочую книгу
  3. Как запустить макрос
  4. Заключение

Как записать макрос

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

  • вручную;
  • автоматически.

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

  1. Изначально необходимой зайти “Центр управления безопасностью” через главное меню программы.
  2. Зайти во вкладку “Параметры макросов”.
  3. Активировать команду “Включить все макросы”.

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu

Активация макросов в исходных настройках Excel
  1. Перейти на вкладку “Разработчик”, которая находится на основной панели инструментов.
  2. Нажать на кнопку “Запись макроса” (она находится в панели инструментов под названием “Код”).

Далее откроется окно с настройками алгоритма, где нужно придумать имя макроса, установить комбинацию клавиш для его запуска. После завершения настройки необходимо подтвердить заданные параметры кнопкой “ОК”.

Важно! Для открытия панели с готовыми макросами нужно нажать комбинацию клавиш Alt+F8. Она вызывает окно с уже созданными алгоритмами, из которых необходимо выбрать желаемый вариант.

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

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

  1. Изначально необходимо найти желаемую команду в интернете. После этого выделить полученный код.
  2. Запустить рабочую книгу, активировать комбинацию клавиш Alt+F
  3. Перед пользователем должно открыться окно VBA.

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu

Окно для настройки, добавления макросов вручную при наличии готового кода
  1. По левую сторону необходимо найти окно “Project — VBA Project”. Из появившегося списка нужно выбрать рабочую книгу.
  2. Открыть меню “Insert”, активировать функцию “Module”.
  3. После этого в левом окне появится новая папка под названием “Moduels”.
  4. Открыть новый объект внутри созданной паки, в свободное окно вставить скопированный код по комбинации клавиш “Ctrl+V”.

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu

Добавление кода и его сохранение для дальнейшего использования алгоритма действий

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

Важно! Чтобы сохранить готовую таблицу с добавленным макросом в Excel версий 2007, 2010, 2013 годов, нужно выбрать из списка тип файла строку “Книга Excel с поддержкой макросов”.

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

Существует несколько проверенных способов запуска добавленных или созданных алгоритмов действий в Excel. Самый простой метод – запуск макроса через VBA:

  1. Зайти во вкладку “Разработчик” на главной панели с инструментами.
  2. Перейти в панель с инструментами “Код”, нажать на кнопку “Макросы”.
  3. Из открывшегося окна нужно выбрать требуемый алгоритм с помощью ЛКМ, нажать на кнопку “Выполнить”.

После этого алгоритм будет выполняться. Активация макроса через комбинацию клавиш:

  1. Необходимо зайти в окно с готовыми или добавленными алгоритмами действий точно так же, как было описано в способе выше.
  2. Перейти во вкладку “Параметры” которая расположена в правой части появившегося окна.
  3. Откроется еще одно окно, в котором можно настроить алгоритм.

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

Совет! В окне с параметрами есть большое свободное поле снизу, которое имеет название “Описание”. В ней рекомендуется кратко написать, какие действия выполняет данный алгоритм. Это поможет не путаться в созданных макросах при их использовании.

Запуска алгоритма через панель быстрого доступа:

  1. На панели быстрого доступа найти значок стрелки, направленной вниз.

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu

Добавление макроса в панель быстрого доступа
  1. Из открывшегося списка выбрать функцию “Другие команды”. Должно появиться окно с параметрами Excel.
  2. Из списка в левой стороне зайти во вкладку “Выбрать команду”. Нажать на функцию “Макросы”.
  3. Далее необходимо выбрать желаемый алгоритм действий.

kak-vstavit-gotovyj-makros-v-rabochuyu-knigu

Доступный список изображений для значка быстрого доступа к алгоритму действий

На панели быстрого доступа перед стрелкой вниз должен появиться произвольный значок выбранного макроса. Его можно изменить через настройки. Чтобы сохранить установленные параметры, необходимо нажать кнопку “ОК”.

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

Заключение

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

Оцените качество статьи. Нам важно ваше мнение:

Microsoft Office Professional Edition 2003 Excel 2010 Еще…Меньше

Аннотация

При автоматизации Office продукта из Visual Basic может быть полезно переместить часть кода в модуль Microsoft Visual Basic для приложений (VBA), который может запускаться в пространстве процессов сервера. Это может повысить общую скорость выполнения приложения и решить проблемы, если сервер выполняет действие только при выполнении вызова.

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

Дополнительная информация

В следующем примере показано, как вставить модуль кода в Microsoft Excel, но для Word и PowerPoint можно использовать один и тот же модуль VBA.

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

Начиная с Microsoft Office XP, пользователь должен предоставить доступ к объектной модели VBA, чтобы любой код автоматизации, написанный для управления VBA, работал. Это новая функция безопасности с Office XP. Дополнительные сведения см. в следующей статье базы знаний:

282830 Программный доступ к Office XP VBA Project отклонен

Шаги по построению примера

  1. Сначала создайте новый текстовый файл с именем KbTest.bas (без .txt расширения). Это модуль кода, который мы вставляем в Excel во время запуска.

  2. В текстовом файле добавьте следующие строки кода:

       Attribute VB_Name = "KbTest"

    ' Your Microsoft Visual Basic for Applications macro function takes 1
    ' parameter, the sheet object that you are going to fill.

    Public Sub DoKbTest(oSheetToFill As Object)
    Dim i As Integer, j As Integer
    Dim sMsg As String
    For i = 1 To 100
    For j = 1 To 10

    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheetToFill.Cells(i, j).Value = sMsg
    Next j
    Next i
    End Sub

  3. Сохраните текстовый файл в каталоге C:KbTest.bas, а затем закроем его.

  4. Начните Visual Basic и создайте стандартный проект. По умолчанию создается форма 1.

  5. В меню Project щелкните Ссылки, а затем выберите версию библиотеки соответствующего типа, которая позволяет использовать ранняя привязка для Excel.

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

    • В Microsoft Office Excel 2007 выберите библиотеку 12.0.

    • В Microsoft Office Excel 2003 выберите библиотеку 11.0.

    • В Microsoft Excel 2002 выберите библиотеку 10.0.

    • В Microsoft Excel 2000 выберите библиотеку 9.0.

    • Для Microsoft Excel 97 выберите библиотеку 8.0.

  6. Добавьте кнопку в форму 1 и поместите следующий код в обработник события Click:

       Private Sub Command1_Click()
    Dim oXL As Excel.Application
    Dim oBook As Excel.Workbook
    Dim oSheet As Excel.Worksheet
    Dim i As Integer, j As Integer
    Dim sMsg As String

    ' Create a new instance of Excel and make it visible.
    Set oXL = CreateObject("Excel.Application")
    oXL.Visible = True

    ' Add a new workbook and set a reference to Sheet1.
    Set oBook = oXL.Workbooks.Add
    Set oSheet = oBook.Sheets(1)

    ' Demo standard Automation from out-of-process,
    ' this routine simply fills in values of cells.
    sMsg = "Fill the sheet from out-of-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    For i = 1 To 100
    For j = 1 To 10
    sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"
    oSheet.Cells(i, j).Value = sMsg
    Next j
    Next i

    ' You're done with the first test, now switch sheets
    ' and run the same routine via an inserted Microsoft Visual Basic
    ' for Applications macro.
    MsgBox "Done.", vbMsgBoxSetForeground
    Set oSheet = oBook.Sheets.Add
    oSheet.Activate

    sMsg = "Fill the sheet from in-process"
    MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground

    ' The Import method lets you add modules to VBA at
    ' run time. Change the file path to match the location
    ' of the text file you created in step 3.
    oXL.VBE.ActiveVBProject.VBComponents.Import "C:KbTest.bas"

    ' Now run the macro, passing oSheet as the first parameter
    oXL.Run "DoKbTest", oSheet

    ' You're done with the second test
    MsgBox "Done.", vbMsgBoxSetForeground

    ' Turn instance of Excel over to end user and release
    ' any outstanding object references.
    oXL.UserControl = True
    Set oSheet = Nothing
    Set oBook = Nothing
    Set oXL = Nothing

    End Sub

  7. Для Excel 2002 и для более поздних версий Excel необходимо включить доступ к проекту VBA. Это можно сделать одним из описанных ниже способов.

    • В Excel 2007 нажмите кнопку Microsoft Office и выберите Excel параметры. Щелкните Центр управления доверием и выберите центр управления Параметры. Нажмите кнопку Параметры, щелкните, чтобы выбрать поле Доверять доступу к объектной модели проекта VBA, а затем нажмите кнопку ОК два раза.

    • В Excel 2003 и более ранних версиях Excel пункт Макрос в меню Инструменты и нажмите кнопку Безопасность. В диалоговом окне Безопасность перейдите на вкладку Надежные источники и выберите Visual Basic Project доступ.

  8. Запустите Visual Basic проекта.

Ссылки

Дополнительные сведения об автоматизации Office от Visual Basic см. на сайте Office поддержки разработки по следующему адресу:

http://support.microsoft.com/ofd

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

Понравилась статья? Поделить с друзьями:
  • Макрос для поиска данных в таблице excel
  • Макрос для поиска в выпадающем списке excel
  • Макрос для поиска в excel 2010
  • Макрос для подстановки данных excel
  • Макрос для печати определенных страниц excel