VBA
AddNumbers = a + b
End Sub
В Excel через VBA можна керувати:
'''Висновок:''' VBA залишається важливим для desktop Office, а Office Scripts краще вписується в сучасну Microsoft 365 cloud-автоматизацію.; * Документація Microsoft Office object model.; Критерій
* файли з персональними даними;
* email-розсилки;
* збереження копій;
* тимчасові файли;
* логи;
* доступ до мережевих папок;
* паролі;
* токени;
* зовнішні підключення;
* експорт у CSV/PDF;
* випадкове надсилання не з цієї причини адресату.;== Workbook ==
=== Заповнити заголовок звіту ===
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
== With ==
Макроси можна підписувати цифровим сертифікатом.; Debug.Print ws.Name
VBA має змогу відкривати, читати, створювати й зберігати файли.; Відкриття книги: Приклад:
MsgBox "Hello, world!"
Практична роль: MsgBox і InputBox підходять для простого діалогу з користувачем без створення окремої форми.; * `Application`;
- `Workbook`;
- `Worksheet`;
- `Range`;
- `Cell`;
- `Chart`;
- `PivotTable`;
- `ListObject`.;== UserForm ==
Практична роль: правильні типи змінних роблять VBA-код зрозумілішим, швидшим і менш схильним до помилок.;
End Select
VBA застосовується не лише в Excel, а й у Word.; Dim ws As Worksheet
Range("A1").Value = "Hello"
MsgBox "Операцію завершено"
Cells надає можливість звертатися до комірки за номером рядка й колонки.; Sub CheckStatus()
Sub FormatReport()
</syntaxhighlight>
Хороші практики VBA
Case "New"
UserForm використовують для: Access VBA застосовується для автоматизації баз даних Microsoft Access.; Якщо потрібно керувати діями Office — VBA доречний.; * запуску refresh;
- керування файлами;
- додаткової логіки;
- форматування результатів;
- створення звітів після актуалізація даних.; Висновок: формули, Power Query і VBA можуть доповнювати одне одного, якщо правильно розділити відповідальність.; value = "Text"
Module — це місце, де зберігається VBA-код.; VBA має змогу бути корисним для:
MsgBox "Новий"
Критично: не варто вмикати макроси у файлах із невідомих або недовірених джерел.; Sub ClearData() Dim isActive As Boolean
переважні аспекти VBA
<syntaxhighlight lang="vb">
End Sub
== Visual Basic Editor ==
Суть об’єктної моделі: VBA керує Excel через об’єкти: застосунок, книга, аркуш, діапазон, комірка.; Python
- зібрати інформаційні дані з кількох Excel-файлів;
- автономно відформатувати звіт;
- створити кнопки для запуску дій;
- перевірити правильність заповнення таблиці;
- сформувати Word-документ із даних Excel;
- розіслати листи через Outlook;
- імпортувати CSV;
- очистити таблицю;
- побудувати зведений звіт;
- створити просту форму введення;
- автоматизувати Access-базу;
- згенерувати файли для клієнтів або підрозділів;
- виконати повторювану офісну процедуру.; Його потрібно використовувати дуже обережно й локально.;</syntaxhighlight>
Приклад:
'''Практична роль:''' Word VBA корисний для генерації документів, шаблонів, договорів і службових листів.; Критерій
'''Перевага:''' With робить код коротшим і читабельнішим, коли багато команд застосовуються до одного об’єкта.;
Приклади задач на VBA
MsgBox показує повідомлення.; Office Scripts
Приклад відкриття Excel-файлу:
</syntaxhighlight> VBA має змогу бути не найкращим вибором для: Sub ReadRangeToArray()
Access VBA
Приклад: End With
ws.Range("A1").Value = "Дата"
</div>
'''Критично:''' у VBA бажано завжди використовувати `Option Explicit`, щоб уникати помилок через випадкові або неправильно написані змінні.; End Function
MsgBox ThisWorkbook.Name
Рекомендовано:
</div>
.Font.Bold = True
<syntaxhighlight lang="vb">
* `String`;
* `Integer`;
* `Long`;
* `Double`;
* `Currency`;
* `Boolean`;
* `Date`;
* `Variant`;
* `Object`;
* `Range`;
* `Worksheet`;
* `Workbook`.;
Variant — універсальний тип, який має змогу містити різні значення.; Часто найкращий варіант — поєднання формул і макросів.;</syntaxhighlight>
.Borders.LineStyle = xlContinuous
Простий приклад макросу:
- застарілий синтаксис;
- обмежена сучасна програмний пакет;
- слабша придатність для великих систем;
- складність version control для Office-файлів;
- ризики безпеки макросів;
- залежність від Microsoft Office;
- проблеми сумісності між версіями Office;
- складність тестування;
- повільність при неправильній роботі з комірками;
- залежність від локального середовища користувача;
- не найкращий вибір для web або cloud automation.; Option Explicit
Робота з помилками
</syntaxhighlight>
Select Case status
- макросів;
- кнопок;
- подій;
- автоматизації дій;
- обробки таблиць;
- запуску workflow.; Якщо тип відомий, краще оголосити його явно.;== Outlook VBA ==
Excel має ієрархічну об’єктну модель.; * Microsoft Learn: Outlook VBA reference.; Практична роль: Worksheet надає можливість працювати з конкретним аркушем, а не покладатися на активне вікно.; * Матеріали щодо Excel automation, Power Query, Office Scripts і Power Automate.; Змінні у VBA оголошуються через `Dim`.;== VBA і Excel-формули ==
* автоматизувати Excel;
* оперативно зробити офісний макрос;
* обробити таблиці;
* сформувати звіт;
* працювати з Word/Outlook із Excel;
* автоматизувати локальний Office-процес;
* створити внутрішній інструмент для невеликої команди;
* скоротити ручні повторювані дії;
* працювати з legacy Office-файлами;
* підтримувати існуючі макроси.; '''With''' надає можливість виконати кілька дій з одним об’єктом.;<div style="background:#e8f8f5; border-left:6px solid #16a085; padding:12px; margin:12px 0;">
VBA часто функціонує з бізнес-даними, фінансовими таблицями, персональними даними й email.; Приклад перевірки існування файлу:
ThisWorkbook.Save
* створювати документи;
* заповнювати шаблони;
* форматувати текст;
* працювати з таблицями;
* вставляти інформаційні дані з Excel;
* генерувати договори;
* створювати листи;
* автоматизувати стилі;
* зберігати PDF.;<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
== Джерела ==
== Форматування ==
== Підпис макросів ==
Функцію можна використовувати в іншому VBA-коді, а іноді й на аркуші Excel.;</div>
Можливі проблеми:
== Продуктивність VBA ==
Application.Calculation = xlCalculationAutomatic
End If
<syntaxhighlight lang="vb">
'''Практична роль:''' цикли потрібні для обробки рядків, аркушів, файлів, листів і повторюваних офісних операцій.; MsgBox lastRow
Краще вказувати аркуш явно:
Variant зручний, але має змогу приховувати помилки типів.;<syntaxhighlight lang="vb">
Sub ListSheets()
</div>
Worksheets("Data").Range("A2:Z1000").ClearContents
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
== Select і Activate ==
Sub ClearReport()
== Умови ==
Sub SafeMacro()
UserForm має змогу містити:
== Range ==
VBA залишається корисним інструментом для швидкої локальної бізнес-автоматизації, особливо коли процеси вже побудовані навколо Excel або Office.; VBA-макроси можуть бути небезпечними, якщо файл отриманий із ненадійного джерела.; End Sub
== Приватність даних ==
End Sub
'''Суть Sub:''' процедура виконує команду або набір команд, але не повертає результат як функція.;<syntaxhighlight lang="vb">
End Sub
Форматування має змогу включати:
Створення аркуша:
</div>
Next ws
'''Підказка:''' у VBA-прикладах істотно завжди дивитися, з якою книгою, аркушем і діапазоном функціонує код.; Dim status As String
</div>
value = Date
!; Sub FindLastRow()
<div style="background:#ecfdf5; border-left:6px solid #10b981; padding:12px; margin:12px 0;">
'''Макрос''' — це записана або написана послідовність команд, яку можна запускати повторно.; On Error GoTo ErrorHandler
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
Sub CreateHeader()
<syntaxhighlight lang="vb">
Sheets("Data").Select
- змінювати комірки;
- копіювати інформаційні дані;
- форматувати таблицю;
- створювати аркуші;
- зберігати файл;
- будувати звіт;
- фільтрувати інформаційні дані;
- запускати обчислення;
- відкривати інші файли;
- виконувати перевірки.;== Debugging ==
|- | Основна ніша | автоматизація процесів Microsoft Office | Універсальна автоматизація процесів, data science, web, scripts |- | Excel-інтеграція | Вбудована | Через бібліотеки або інтеграції |- | Поріг входу для Office-користувачів | Нижчий | Вищий, якщо користувач системи не програміст |- | програмний пакет | Office object model | Дуже широка загальна програмний пакет |- | Production-системи | Обмежено | Значно ширші функціональні можливості |}
Dim wordApp As Object
== Об’єктна модель Excel ==
</div>
Word VBA має змогу:
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
== Select Case ==
|- | Основна мова | Visual Basic for Applications | TypeScript |- | Середовище | Desktop Office | Microsoft 365 / web automation |- | історичний розвиток | Дуже зрілий legacy-інструмент | Сучасніший cloud-oriented підхід |- | Найкраще для | Desktop Excel automation | Web Excel і Power Automate сценарії |}
VBA і Power Query
Безпека макросів
Типові помилки початківців
Приклад користувацької функції для Excel:
Головна думка: VBA — це практичний інструмент для автоматизації Office.; Case Else Sub InsertText() VBA краще підходить для:
End Sub
Dim doc As Object .Font.Size = 14
MsgBox "Невідомий"
</syntaxhighlight>
Workbooks.Open "C:\Data\input.csv"
VBA доречний, коли потрібно:
Практична роль: Function корисна для повторюваних обчислень, перевірок і логіки, яка має повертати результат.;Практична роль: UserForm надає можливість зробити макрос зручнішим для користувачів, які не хочуть редагувати код або комірки параметрів.; VBA
</syntaxhighlight>
Головна ніша VBA: Excel-автоматизація — це найпоширеніше й найпрактичніше сфера застосування Visual Basic for Applications.;'''істотно:''' VBA є собою сильним інструментом для Office-автоматизації, але не повинен автономно ставати архітектурною основою великих систем.;== Excel VBA ==
MsgBox "Операцію завершено"
<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
Sub CreateEmail()
=== Простий макрос із обробкою помилки ===
</div>
'''Практична порада:''' VBA варто обирати для задач, де основна робота вже відбувається в Microsoft Office і потрібна швидка локальна автоматизація процесів.; Кілька умов:
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
</div>
</div>
MsgBox "Заблокований"
Application.EnableEvents = True
У модулях можуть бути:
<syntaxhighlight lang="vb">
Dim wb As Workbook
MsgBox "Minor"
<syntaxhighlight lang="vb">
== Робота з файлами ==
'''Function''' повертає значення.; * Документація щодо безпеки макросів Microsoft Office.; End Sub
With Worksheets("Report").Range("A1")
MsgBox "Привіт, " & userName
Без `Option Explicit` помилки в назвах змінних можуть залишитися непоміченими.;ElseIf status = "Active" Then
If Not Intersect(Target, Range("A:A")) Is Nothing Then
End Sub
total = 100
</syntaxhighlight> Краще: With Worksheets("Report").Range("A1:D1")
{{SEO
Set ws = ThisWorkbook.Worksheets("Data")
Робота з масивами
ErrorHandler:
Exit Sub
VBA і Office Scripts
Sub застосовується для:
У VBA є собою інструменти налагодження.;== Див.; додатково == `For`:
Debug.Print i
.Interior.Color = RGB(220, 230, 241)
Поширені помилки:
Debug.Print "Last row: " & lastRow
<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
Початківці часто використовують `Select` і `Activate`, особливо після запису макросу.; Не найкращий приклад:
</div>
* макросів Excel;
* автоматизації звітів;
* обробки таблиць;
* форматування документів;
* створення шаблонів;
* перевірки даних;
* імпорту й експорту файлів;
* роботи з CSV;
* автоматизації Word;
* автоматизації Outlook;
* автоматизації Access;
* створення UserForm;
* внутрішніх офісних інструментів;
* швидкої бізнес-автоматизації.;<syntaxhighlight lang="vb">
Option Explicit
mail.To = "user@example.com"
Dim data As Variant
- форми;
- звіти;
- запити;
- кнопки;
- перевірка даних;
- імпорт;
- експорт;
- бізнес-логіка;
- робота з DAO/ADO;
- автоматизація процесів локальних баз даних.;=== Знайти останній рядок ===
Ризики: End With
Sub CreateWordDocument()
Outlook VBA має змогу автоматизувати роботу з email.;<div style="background:#e8f8f5; border-left:6px solid #16a085; padding:12px; margin:12px 0;">
Приклад:
'''Перевага:''' VBA корисний там, де користувачі вже працюють в Excel або Office, але хочуть зменшити кількість ручних повторюваних дій.; VAT = amount * rate
== Складові модулі ==
Збереження:
VBA має кілька типів циклів.; Можна використовувати:
VBA часто використовують для імпорту або експорту CSV.; Приклади подій:
VBA застосовується для:
== CSV ==
End Sub
End Sub
Cells(2, 3).Value = "C2"
Power Query підходить для:
<syntaxhighlight lang="vb">
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
Sub Example()
For i = 1 To 5
== Коли VBA має змогу бути невдалим вибором ==
VBA застосовується; додатково реалізовано автоматизації Excel, Word, Access, Outlook та інших Office-застосунків.;<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
Case "Blocked"
Set ws = ThisWorkbook.Worksheets("Data")
Set mail = Application.CreateItem(0)
Dim ws As Worksheet
<div style="background:#fdecea; border-left:6px solid #e74c3c; padding:12px; margin:12px 0;">
Змінні
як ілюстрація, Excel має змогу створити Word-документ:
З явним аркушем:
Application.Workbooks("Report.xlsx").Worksheets("Data").Range("A1").Value = "Hello"
* створювати модулі;
* писати процедури;
* редагувати макроси;
* створювати UserForm;
* переглядати об’єкти проєкту;
* запускати код;
* ставити breakpoints;
* налагоджувати помилки;
* переглядати Immediate Window;
* працювати з references.; Приклад:
Selection.TypeText "автономно створений текст"
End Function
'''Visual Basic Editor''' або '''VBE''' — це редактор, у якому пишуть і редагують VBA-код.;</div>
Dim lastRow As Long
Set wb = Workbooks.Open("C:\Reports\data.xlsx")
Потрібно контролювати:
<syntaxhighlight lang="vb">
<syntaxhighlight lang="vb">
'''Практична роль:''' debugging у VBA особливо важливий, бо макроси часто працюють із реальними файлами й даними користувачів.; Dim wb As Workbook
* `On Error GoTo ErrorHandler`;
* `On Error Resume Next`;
* `Err.Number`;
* `Err.Description`;
* очищення стану після помилки.;</div>
{| class="wikitable"
== Події ==
<syntaxhighlight lang="vb">
'''центральний об’єкт Excel VBA:''' Range застосовується для читання, запису, форматування й обробки даних у комірках.; Приклад:
Range("A1").Select
<div style="background:#e8f8f5; border-left:6px solid #16a085; padding:12px; margin:12px 0;">
End Sub
* breakpoints;
* Step Into;
* Step Over;
* Immediate Window;
* Watch Window;
* Locals Window;
* `Debug.Print`;
* `Stop`;
* перегляд значень змінних.; Set doc = wordApp.Documents.Add
'''Основна ідея:''' VBA надає можливість автоматизувати ручні дії в Microsoft Office і перетворювати повторювані операції на макроси або невеликі внутрішні інструменти.; * вбудований у Microsoft Office;
* зручний для Excel-автоматизації;
* швидкий старт для офісних користувачів;
* доступ до об’єктної моделі Office;
* можливість запису макросів;
* автоматизація процесів повторюваних дій;
* робота з файлами;
* створення форм;
* інтеграційні функціональні можливості Excel, Word, Outlook і Access;
* корисний для внутрішніх бізнес-процесів;
* не потребує окремої платформи для простих задач.; VBA не замінює Excel-формули в цілому.;</div>
.Font.Size = 16
'''Практична роль:''' Workbook застосовують, коли потрібно для роботи з цілим Excel-файлом.;
Sub HelloWorld() У Excel макрос має змогу:
mail.Subject = "Звіт"
MsgBox "Останній рядок: " & lastRow
!; Dim mail As Object </syntaxhighlight> VBA підтримує роботу умовні конструкції `If ...; * Microsoft Learn: Access VBA reference.; Найчастіше VBA асоціюється з Excel, де за його допомогою автоматизують звіти, обробку таблиць, перевірку даних, імпорт, експорт, форматування, побудову документів і повторювані бізнес-операції.; MsgBox "Активний"
Office Scripts — сучасніший підхід до автоматизації Excel у Microsoft 365, який використовує TypeScript.; * створення листів;
- надсилання повідомлень;
- обробка вхідних листів;
- збереження вкладень;
- сортування листів;
- створення задач;
- інтеграційні функціональні можливості з Excel;
- автоматичні повідомлення.; With Worksheets("Report").Range("A1")
</syntaxhighlight>
- простих обчислень;
- прозорих розрахунків на аркуші;
- швидкого аналізу;
- роботи користувачів без коду.;
Range("A1").Value = "Звіт"
Dim i As Long
Set wordApp = CreateObject("Word.Application")
Суть макросу: це команда або набір команд, які користувач системи має змогу запускати замість ручного повторення дій.; Range("A1").Font.Bold = True </syntaxhighlight> End Sub
</syntaxhighlight>
Word VBA
Power Query часто є собою кращим інструментом для імпорту, очищення й трансформації даних.; Worksheets("Data").Range("A1").Value = "Готово" Поширені типи:
ThisWorkbook.SaveAs "C:\Reports\final_report.xlsx"
Worksheets.Add.Name = "NewReport"
- використовувати `Option Explicit`;
- давати змінним зрозумілі імена;
- не використовувати `Select` без потреби;
- явно вказувати Workbook і Worksheet;
- розділяти код на модулі;
- обробляти помилки;
- не приховувати помилки через `On Error Resume Next`;
- читати великі діапазони в масиви;
- вимикати ScreenUpdating лише тимчасово;
- повертати конфігурація Excel після макросу;
- документувати макроси;
- робити резервні копії файлів;
- не зберігати паролі в коді;
- підписувати макроси в корпоративному середовищі.; Основні переважні аспекти VBA:
VBA використовує `On Error` для обробки помилок.; Приклад:
doc.Content.Text = "Документ створено з Excel VBA" lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Variant
У VBE можна:
Простий приклад відкриття CSV:
</div>
== Обмеження VBA ==
End Sub
Dim name As String
'''Worksheet''' — це аркуш Excel.; '''Увага:''' CSV здається простим форматом, але в бізнес-даних часто виникають проблеми з кодуванням, роздільниками й форматами дат.;== Цикли ==
For Each ws In ThisWorkbook.Worksheets
VBA має змогу реагувати на події.; '''Практична роль:''' Access VBA надає можливість створювати невеликі внутрішні бази даних із формами, звітами й логікою.; Надсилаємо звіт."
</div>
'''Практична користь:''' VBA має змогу перетворити сирі інформаційні дані на готовий оформлений звіт.;
Dim count As Long
VBA — це вбудована мова автоматизації Microsoft Office, яка найбільше застосовується для Excel-макросів, офісних сценаріїв, автоматизації звітів, обробки таблиць, Word-документів, Outlook-листів і Access-форм.;ErrorHandler:
Приклад:
If age >= 18 Then
Макроси
</syntaxhighlight> </syntaxhighlight>
MsgBox "Adult"
Робота з останнім рядком
End Sub
End If
End With
Приклад:
Коли варто використовувати VBA
Worksheets("Data").Range("A1").Value = "Hello"
MsgBox "Файл існує"
Приклад: Практична роль: події дозволяють запускати VBA-код автономно, коли користувач системи щось робить у документі.; MsgBox "Новий" Перевага: VBA має змогу об’єднувати Excel, Word, Outlook і Access в один офісний workflow.; Для прискорення часто використовують:
Функції Function
Формули краще підходять для:
MsgBox "Сталася помилка: " & Err.Description
Set wb = Workbooks.Open("C:\Reports\data.xlsx")
<div style="background:#fff4e5; border-left:6px solid #f39c12; padding:12px; margin:12px 0;">
Приклад:
`For Each`:
</div>
Можливі задачі:
Для чого застосовується VBA
Cells(1, 1).Value = "A1" Суть умов: код має змогу виконувати різні дії залежно від значень у змінних, комірках або документах.; MsgBox "Змінено колонку A"
Dim total As Double
* не використовувати `Option Explicit`;
* покладатися на активний аркуш;
* надмірно використовувати `Select`;
* не перевіряти існування файлів;
* не обробляти помилки;
* використовувати `On Error Resume Next` всюди;
* працювати з комірками по одній у великих таблицях;
* не повертати `Application.ScreenUpdating`;
* випадково перезаписувати інформаційні дані;
* не робити резервну копію перед макросом;
* зберігати паролі в коді;
* запускати макроси з недовірених файлів;
* не документувати складну логіку.; * Microsoft Learn: Word VBA reference.; * читання діапазону в масив;
* запис діапазону одним блоком;
* вимкнення актуалізація екрана;
* вимкнення автоматичних обчислень;
* вимкнення events;
* уникнення `Select` і `Activate`.; VBA
VBA має суттєві обмеження.; '''Практична роль:''' пошук останнього рядка потрібен для імпорту, додавання даних, перевірок і звітів.; lastRow = Worksheets("Data").Cells(Worksheets("Data").Rows.Count, "A").End(xlUp).Row
'''Небезпека:''' макрос має змогу дуже оперативно змінити або видалити багато даних, з цієї причини перед запуском важливих макросів потрібні перевірки й резервні копії.;
Приклад: </syntaxhighlight>
!;=== Очистити діапазон ===
Else
Dim age As Long
Application.Calculation = xlCalculationManual
- регулярного імпорту;
- очищення таблиць;
- об’єднання джерел;
- трансформацій;
- повторюваних data workflows.;== Тематичні мітки ==
Case "Active"
If status = "New" Then
Висновок: VBA зручний для автоматизації прямо всередині Office, а Python краще підходить для ширших, сучасніших і масштабніших сценаріїв.;'''Workbook''' — це книга Excel.; value = 10
If Dir("C:\Reports\data.xlsx") <> "" Then
!; Приклад збереження копії:
Загальний характеристика
rowNumber = rowNumber + 1
</syntaxhighlight>
Dim ws As Worksheet істотно: автоматичне надсилання email потрібно використовувати обережно, щоб уникнути помилкових розсилок і витоку даних.; це мова програмування й середовище автоматизації, вбудоване в Microsoft Office виступає ключовою рисою створення макросів забезпечується через VBA або Visual Basic for Applications.;</syntaxhighlight>
Приклад:
End If Select Case зручний, коли потрібно перевірити багато варіантів.; Він найкраще функціонує там, де потрібно оперативно прибрати ручну рутину в Excel, Word, Outlook або Access, але потребує обережності з безпекою, даними й підтримкою.; `Do While`:
Основні об’єкти:
Debug.Print ws.Name Dim ws As Worksheet
VBA є собою подієвою й процедурною мовою, яка функціонує всередині Office-документів і застосунків.; Практична роль: цифровий підпис макросів важливий у корпоративному середовищі, де VBA застосовується регулярно.; .Value = "Звіт продажів"
Worksheets("Data").Cells(1, 1).Value = "A1"
Приклад:
<div style="background:#fff7ed; border-left:6px solid #fb923c; padding:12px; margin:12px 0;">
'''Правило:''' макрос має працювати лише з тими даними, які потрібні для конкретної задачі, і не повинен непомітно копіювати або надсилати чутливу інформацію.; * книгами;
* аркушами;
* діапазонами;
* комірками;
* таблицями;
* формулами;
* зведеними таблицями;
* графіками;
* фільтрами;
* форматуванням;
* файлами;
* подіями;
* кнопками;
* формами.;
!; * Microsoft Learn: Excel VBA reference.; End Sub Application.ScreenUpdating = True
- підтвердити автора;
- зменшити ризик підміни;
- полегшити корпоративне використання;
- керувати політиками безпеки;
- відокремити довірені макроси від випадкових файлів.; Function VAT(amount As Double, rate As Double) As Double
VBA має змогу бути повільним, якщо працювати з комірками по одній.; Приклад події зміни аркуша:
Sub ShowWorkbookName()
'''Головне правило:''' у VBA краще звертатися до об’єктів напряму, а не вибирати їх через `Select`.; Приклад:
<div style="background:#eafaf1; border-left:6px solid #2ecc71; padding:12px; margin:12px 0;">
Range("A1:B10").Font.Bold = True
<div style="background:#eef2ff; border-left:6px solid #4f46e5; padding:12px; margin:12px 0;">
</div>
</div>
VBA і Python часто порівнюють для автоматизації.; Приклад:
Else
mail.Body = "Добрий день.; Водночас VBA має обмеження: ризики макросів, складність командної розробки, залежність від Office, неідеальна масштабованість і застарілий підхід для багатьох сучасних cloud- або web-сценаріїв.;Висновок
істотно: у VBA потрібно уважно працювати з шляхами, правами доступу й відкритими файлами.; Loop
MsgBox "Невідомий статус"
</syntaxhighlight>
Dim price As Double Практична порада: якщо задача — лише очистити й об’єднати інформаційні дані, Power Query часто кращий за VBA.; price = 19.99
- введення даних;
- невеликих внутрішніх інтерфейсів;
- фільтрів;
- вибору параметрів;
- керування макросом;
- простих office-додатків.;
mail.Display
Option Explicit змушує явно оголошувати змінні.; Приклад:
Next i
Головна перевага: VBA дає швидкий шлях від ручної офісної операції до автоматизованого макросу.; * великих enterprise-систем;
- web-застосунків;
- cloud-native автоматизації;
- складних API-сервісів;
- великих data pipelines;
- сучасного ML/AI workflow;
- командної розробки з CI/CD;
- систем із високими вимогами до безпеки;
- задач, які краще вирішуються Power Query, SQL, Python або Power Automate;
- довгострокових критичних бізнес-платформ.; age = 20
- повторюваних процедур;
- імпорту/експорту;
- складної логіки;
- роботи з файлами;
- автоматичного форматування;
- генерації звітів;
- дій, які формула не має змогу виконати.; Приклад створення листа:
VBA і Python
!; .Font.Bold = True
== Cells ==
* Microsoft Learn: Visual Basic for Applications.; Він представляє комірку або діапазон комірок.; Читання великого діапазону в масив часто швидше, ніж робота з кожною коміркою окремо.; isActive = True
End If
VBA має змогу автоматизувати форматування Excel.;<syntaxhighlight lang="vb">
Sub — це процедура, яка виконує дію й не повертає значення.; Вона дає доступ до об’єктної моделі Office: книг Excel, аркушів, комірок, документів Word, листів Outlook, форм Access та інших елементів.; .Value = "Звіт"
status = "Active"
Практична роль: Select Case робить код читабельнішим, якщо є собою багато фіксованих варіантів.; CSV має змогу мати проблеми з: VBA має змогу керувати іншими Office-застосунками через automation.; Else`.;== Worksheet ==
Worksheets("Report").Range("A2:Z1000").ClearContents
Exit Sub
Dim userName As String Типові задачі VBA: істотно: `Cells(row, column)` особливо корисний у циклах, але потрібно уважно контролювати номери рядків і колонок.; Then ...; Приклад:
Application.EnableEvents = False End Sub Dim lastRow As Long
End Sub
Do While Cells(rowNumber, 1).Value <> "" Worksheets("Data").Range("A1").Value = "Hello"
userName = InputBox("Введіть ім’я:")
wordApp.Visible = True
істотно: VBA найкраще підходить для автоматизації Office-процесів, а не для створення великих сучасних enterprise-систем.; Приклад: End Sub Function AddNumbers(a As Double, b As Double) As Double
Sub SafeOpenFile()
- шрифт;
- колір;
- межі;
- ширину колонок;
- формат чисел;
- вирівнювання;
- заливку;
- умовне форматування.;
Приклад: * запуск шкідливого коду; * видалення або зміна файлів; * надсилання email; * доступ до документів; * виконання shell-команд; * витік даних; * підміна макросів; * фішингові документи.;
Workbooks.Open "C:\Reports\data.xlsx"Excel VBA — найпопулярніший сценарій використання VBA.;
Приклад:
Приклад:
<div style="background:#e7f3ff; border-left:6px solid #2b7cff; padding:12px; margin:12px 0;">
</div>
count = 10
<syntaxhighlight lang="vb">
' код обробки
Це сприяє:
== Option Explicit ==
Selection.Value = "Hello"
Private Sub Worksheet_Change(ByVal Target As Range)
* кодуванням;
* роздільниками;
* комами в тексті;
* датами;
* десятковими роздільниками;
* локальними налаштуваннями Excel.; '''Практична роль:''' VBE є собою основним середовищем розробки для макросів і VBA-автоматизації в Office.; * TextBox;
* ComboBox;
* ListBox;
* CheckBox;
* OptionButton;
* CommandButton;
* Label;
* Frame.; Dim value As Variant
</div>
'''Головне правило:''' хороший VBA-код має бути явним, зрозумілим, безпечним для даних і не залежати від випадково активного аркуша або виділеної комірки.; '''Практична порада:''' краще розділяти код на зрозумілі модулі: імпорт, перевірка, форматування, звіти, допоміжні функції.;
InputBox запитує значення.; End Sub
.Font.Bold = True
MsgBox total
Обробити всі аркуші
У VBA масиви часто використовують для швидкої обробки даних.; Практична порада: для великих таблиць краще читати діапазон у масив, обробляти в пам’яті й записувати назад одним блоком.; Sub CheckAge()
Sub ListWorksheets()
- `Sub` процедури;
- `Function` функції;
- змінні;
- константи;
- допоміжні процедури;
- бізнес-логіка макросів.; Поширені підходи:
Next ws For Each ws In ThisWorkbook.Worksheets
Помилка: будувати критичну корпоративну систему лише на складних Excel-макросах без контролю версій, тестування, документації й резервного плану.; Часта задача — знайти останній заповнений рядок.;<syntaxhighlight lang="vb">
Можливі задачі:
автоматизація процесів Office між застосунками
MsgBox і InputBox
Range — один із найважливіших об’єктів Excel VBA.; * відкриття книги;
- зміна комірки;
- натискання кнопки;
- активація аркуша;
- збереження файлу;
- закриття книги;
- вибір комірки;
- отримання email в Outlook.; Порівняння:
- Програмування
- Мова програмування
- Макрос
- Microsoft Excel
- Excel VBA
- Microsoft Word
- Microsoft Access
- Microsoft Outlook
- Microsoft Office
- Power Query
- Power Automate
- Office Scripts
- Python
- Автоматизація
- Бізнес-процес
- Документообіг
- Логування
- Налагодження коду
- Безпека застосунків
- Приватність даних