VBA и макросы

 

 

Microsoft Visual Basic

 

Microsoft Visual Basicотносительно простой и популярный инструмент для создания офисных Windows-программ с использованием визуальных средств.

Язык Basic разработан в 1965 году как средство обучения и работы непрофессиональных программистов.

Basic (Beginner's All-purpose Symbolic Instruction Code, многоцелевой язык символических инструкций для начинающих) в дословном переводе означает "базовый".

 

В 1991 году под лозунгом "теперь и начинающие программисты могут легко создавать приложения для Windows" появилась первая версия нового инструментального средства Microsoft Visual Basic (VB).

 

Visual Basic стал родоначальником средств быстрой разработки программ (Rapid Application Development, RAD)

 

Сегодня VB  один из самых распространенных инструментов создания приложений (в среде Microsoft  Office).

Visual Basic создал Алан Купер (Alan Cooper, https://en.wikipedia.org/wiki/Alan_Cooper )

 

 

 

 

Alan Cooper!

 

Visual Basic создал Алан Купер (Alan Cooper).

kmp рекомендует книгу Алана Купера:

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

Алан Купер:

Как противостоять натиску компьютерных технологий, проникающих в нашу жизнь c ужасающей скоростью? Наши телефоны, фотокамеры, автомобили - все, что нас окружает, - автоматизируются, программируются, создаются разработчиками программ, устройств и технологий, которые думают не так, как мы. Здесь всем заправляют инженеры. Мы разрешили пациентам завладеть психбольницей.

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

 

Читайте Купера: https://www.cooper.com/people/alan_cooper

 

 

 

 

 

Visual Basic в 2017 году

 

Индекс TIOBE определяет самые популярные технологии программирования, учитывая мировое количество специалистов в области, распространённость онлайн-курсов и др.

На сайте TIOBE можно посмотреть индекс популярности( в том числе настраиваемую инфографику изменения популярности для самых рейтинговых языков и Very Long Term History).

Согласно исследования Stack Overflow, самые нелюбимые технологии начала 2017 года:

  1. Visual Basic — 79,5%.

  2. WordPress — 74,3%.

  3. Matlab — 72,8%

  4. .........

Visual Basic - является важным, популярным и востребованным (нишево, для офисного программирования) языком. Однако не в Беларуси. Вместе с тем он, как сейчас представляется, не перспективен.

 

 

 

 

Visual Basic for Applications

Visual Basic for Applications (VBA, Visual Basic для приложений) — реализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office, AutoCAD, SolidWorks, CorelDRAW, WordPerfect и ESRI ArcGIS и др.

VBA является интерпретируемым построенным на COM языком, что позволяет использовать все доступные в операционной системе COM объекты и компоненты ActiveX.

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

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

В будущем Microsoft планирует заменить VBA на Visual Studio Tools for Applications (VSTA) — инструментарий расширения функциональности приложений, основанный на Microsoft .NET.

 

 

 

Изучая Visual Basic for Applications

Справочная информация:

Новая книжка:

  • Mastering VBA for Microsoft Office 2016
    Mastering VBA for Microsoft Office 2016 helps you extend the capabilities of the entire Office suite using Visual Basic for Applications (VBA). Even if you have no programming experience , you'll be automating routine computing processes quickly using the simple, yet powerful VBA programming language.

 

 

 

Visual Studio LightSwitch

Флагманский пакет инструментальных средств Microsoft Visual Studio является мощным решением для профессионалов, но слабо подходит для начинающих.

Для тех, кто только приступает к программированию Microsoft выпустила Visual Studio LightSwitch - надстройку над Visual Studio.

Visual Studio LightSwitch gоддерживаются два .NET-языка: Visual Basic и C#.

В качестве целевой платформы для создаваемых приложений выступает Silverlight.

 

 

 

 

Альтернативная точка зрения на VBA

 


YourLanguageSucks (
ваш язык — отстой, в т.ч. VBA): https://wiki.theory.org/YourLanguageSucks#VBA_sucks_because

 

 

 

 

Макросы

МАКРОС (macros) — программный объект, при обработке «развёртывающийся» в последовательность действий или команд.

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

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

Макросы используются:

  • для ускорения часто выполняемых операций редактирования или форматирования;

  • для объединения сложных команд;

  • для упрощения доступа к параметрам в диалоговых окнах;

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

  • открытия документа и перемещения непосредственно в место последнего редактирования.

 

 

 

 

Макросы в MS Office

 

 

В Microsoft Office макросы можно создавать:

  • с помощью диалогового окна Запись макроса (способ позволяет быстро создавать макросы при минимуме усилий. При этом макрос записывается в виде последовательности инструкций на языке программирования Visual Basic для приложений). Для создания макроса достаточно включить режим записи и записать последовательность действий нажатием соответствующих клавиш. После этого макрос можно выполнять каждый раз, когда надо произвести тот же набор действий снова. Например, если часто возникает необходимость вставить в документы специально отформатированную таблицу, то можно записать макрос, вставляющий таблицу с нужными границами, размером и числом строк и столбцов.

 

 

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

 

Для выполнения макроса в MS Office:

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

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

 

В MS Office макросы хранятся:

  • в шаблонах (по умолчанию макросы сохраняются в шаблон Обычный, чтобы они были доступны всем документам данного компьютера).

  • в документах (макросы можно сохранить в файле документа, при переносе на другой компьютер макрос переносится с самим документом).

 

 

Операции с макросами: копирование, удаление или переименование макросов осуществляется с помощью диалогового окна Организатор. Чтобы открыть его, выберите команду Макрос в меню Вид, а затем - команду Макросы и нажмите кнопку Организатор.

 

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

 

 

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

 

Для документов с макросами в Microsoft Office существуют особые форматы:

  • Документ Word с поддержкой макросов (*.docm)

  • Книга Excel с поддержкой макросов (*.xlsm)

 

 

 

Макрос автозамены

Для выполнения макросов необходима соответствующая программная среда. Такая среда интегрирована в текстовый процессор Microsoft Word и табличный процессор Microsoft Excel и отсутствует в приложении Notepad (Блокнот - простом текстовом редакторе).

Однако, для автоматической обработки текста в Блокноте могут быть использованы макросы из приложений Microsoft Word и Microsoft Excel.

Примером такого макроса (для осуществления автозамены в тексте) является макрос kmpX

Код макроса kmpX:

Sub kmpX()
Dim s As String, v As Variant, i As Long, l As Long
Open "C:\Users\kmp\Desktop\macros-replacement\kmp.txt" For Input As #1: s = Input(LOF(1), 1): Close #1
v = Split(s, vbCrLf)
Open "C:\Users\kmp\Desktop\macros-replacement\kmp.txt" For Output As #1
For i = 0 To UBound(v) - 1
s = v(i)
s = Replace(s, "университет", "БрГУ имени А.С. Пушкина")
s = Replace(s, "kmp", "Концевой Михаил Петрович")
s = Replace(s, "макрос", "в слове МАКРОС ударение падает на первый слог")
Print #1, s
Next
Close #1
End Sub

Назначение  макроса  kmpX: макрос ищет во внешнем файле (для котрого должно быть строго прописаны имя и адрес - расположение на диске) определенные лексические конструкции и заменяет их на другие.

Назначение редактируемых элементов кода макроса  kmpX:

  • "C:\Users\kmp\Desktop\macros-replacement\kmp.txt" - здесь строго прописывается полное имя (имя с расширением) файла и его адрес (путь каталогов). Макрос будет искать текстовый файл (в формате *.txt) на диске С: в папке Users в папке kmp в папке Desktop в папке macros-replacement

  • s = Replace(s, "университет", "БрГУ имени А.С. Пушкина")
    s = Replace(s, "kmp", "Концевой Михаил Петрович")
    s = Replace(s, "макрос", "в слове МАКРОС ударение падает на первый слог")
    -
    - здесь прописываются лексические конструкции для поиска и замены. Макрос ищет университет и заменяет на  БрГУ имени А.С. Пушкина и т.д.

ВАЖНО: для корректной работы макроса прописанный в нем адрес целевого файла должен строго соответствовать расположению файла в файловой системе (в каталогах на диске)

 

 

 

Макрос замены цвета текста

Пример макроса (для осуществления автозамены цвета текста с красного на черный) является макрос kmpRed

Код макроса kmpRed:

Sub kmpRed()
'
Selection.Find.ClearFormatting
With Selection.Find.Font
.Underline = wdUnderlineNone
.Color = wdColorRed
End With
Selection.Find.Replacement.ClearFormatting
With Selection.Find.Replacement.Font
.Underline = wdUnderlineNone
.Color = wdColorAutomatic
End With
With Selection.Find
.Text = "*"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Назначение редактируемых элементов кода макроса  kmpX:

  • .Color = wdColorRed - здесь  прописывается имя цвета заменяемого текста. Макрос будет искать текст с красным цветом (Red)

  • .Color = wdColorAutomatic - здесь  прописывается имя цвета заменяющего текста. Макрос будет заменять текст с красным цветом (Red)  на аналогичный текст черного цвета (Automatic).

 

 

 

Макрос c Мастером

Макрос поиска/замены для Microsoft Office Word состоит из 3 объектов (см. рисунок):

  • модуль SRUnit

  • форма SRForm

  • форма SRFiles.

Для установки все эти три объекта необходимо перенести в шаблон Normal (Мы этого делать не будем, а если бы пришлось, то открыв редактор Visual Basic for Application перетащили бы названные выше модули на шаблон Normal).

 Возможности макроса:

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

  • Поиск/замена по регулярному выражению. Используется объект VBScript.RegExp с присущими ему недостатками,  так для замены на подвыражения используется знак "$" вместо общепринятого символа "\".  Необходимо учитывать, что при использовании регулярных выражений замена осуществляется с конца документа в начало. Это сделано, чтобы сократить     вычислительную работу.

  • Поиск/замена по подстановочным символам. Поиск с подстановочными символами всегда регистрозависимый

  • Обработка файлов по списку (потоковая обработка). Чтобы использовать этот режим щелкните по кнопке "Несколько файлов", введите в поле ввода список файлов с полными путями и в главном окне макроса нажмите кнопку "Замена" (рядом с кнопкой "Несколько файлов"). При этом файлы будут открываться Word по очереди, в каждом будет осуществляться замена.

  • Режим записи исправлений, чтобы посмотреть и проверить что и где было заменено.

 

ВНИМАНИЕ:

  • Мастер запускается выбором формы SRForm и командой Выполнить

  • Редактирование формы Мастера осуществляется после двойного щелчка по форме SRForm в редакторе VBA настройкой категорий и прямым редактированием текста в активных полях

 

 

 

 

Макровирусы

 

В 2016 году произошло второе рождение макровирусов - зловредных макросов в документах Microsoft Office

См. подробнее: 27.06.2018 Безопасность Microsoft Office: макросы VBA
 

 

 

 

Мышь с поддержкой макросов

Gamdias Hades - игровая мышь с поддержкой макросов.

Gamdias Hades имеет 256К памяти, поэтому “помнит” все выбранные установки и макросы даже на чужом компьютере без установленного в системе драйвера.

Настраивается Gamdias Hades через фирменный софт Gamdias Hera.

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

При первом же включении вам предложат обновить прошивку через Интернет, что можно будет делать и в будущем.

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

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

 

 kmp