Пропоную готовий код VBA для того, щоб отримати ефект набору тексту в документі Word. Тобто, при виконанні макросу, в тому місці де встановлений курсор, почнеться друк заздалегідь підготовленого вами тексту. І буде це виглядати так, ніби текст набирає людина.
Готовий VBA код набору тексту в Word
Sub TypeLikeHuman()
' Оголошення змінної text та ініціалізація текстом
Dim text As String
text = "Привіт Світ!"
' Оголошення змінної індексу i
Dim i As Integer
' Цикл для кожного символу в тексті
For i = 1 To Len(text)
' Вставка одного символу в виділену область
Selection.TypeText Mid(text, i, 1) 'Функція Mid повертає значення типу Variant (String), яке містить вказану кількість символів рядка.
' Затримка 1 секунда перед набором наступного символу
Dim endTime As Double
endTime = Timer + 1 'Повертає значення типу Single, що становить кількість секунд, що минули після півночі. У Windows функція Timer повертає частки секунди. До цієї частки ми додаємо 1
Do While Timer < endTime
DoEvents
Loop
Next i
End Sub
Пояснення коду
Цей код виконує наступні кроки:
- Оголошує змінну text та ініціалізує її текстом "Привіт Світ!".
- Оголошує змінну i для використання в циклі.
- Використовує цикл для кожного символу в тексті.
- Додає кожен символ до виділеної області в документі.
- Функція Mid повертає значення типу Variant (String), яке містить вказану кількість символів рядка. Ця функція має три аргументи:
- text (обов'язковий аргумент) – рядковий вираз, з якого повертаються символи.
- i (обов'язковий аргумент) – позиція символу в рядку, з якого починається частина, що забирається.
- 1 (необов'язковий аргумент) – число символів, що повертаються (в нашому випадку це 1 символ).
- Оголошує змінну endTime для реалізації затримки друку наступного символу.
- Функція Timer повертає значення типу Single, що становить кількість секунд, що минули після півночі. У Windows функція Timer повертає частки секунди. До цієї частки ми додаємо 1.
- Забезпечує затримку одну секунду перед набором наступного символу за допомогою циклу та функції DoEvents.
Функція DoEvents передає управління операційній системі для обробки подій та повідомлень, які чекають у системній черзі та всіх натискань клавіш із черги SendKeys. Після обробки всіх подій, управління повертається застосунку (наступній інструкції, яка прописана після рядка DoEvents). Ця функція застосовується для забезпечення можливості переривання користувачем якоїсь тривалої операції, що виконується програмою. - Повторює цей процес для кожного символу в тексті.
