Програмування на vba в microsoft office


Програмування на VBA в Microsoft Office.
Програвач звукових файлів

Тут ми розглянемо найпростіший приклад застосування мультимедіа в додатках на Visual Basic for Applications - програвання WAV-файлів. Толковое озвучування подій в прикладній програмі завжди привертає увагу користувачів і підвищує їх інтерес до роботи з цією програмою. Залишається дізнатися, як це зробити.







Тепер у вікні вихідного тексту програмуватимемо.

Просте відтворення звуку здійснюється функцією WinAPI PlaySound. Її 32-розрядної версії в Win32API іменується PlaySoundA. Вона може відтворювати WAV-файли, всі зареєстровані системні події і ресурси з EXE і DLL файлів. Опис її виглядає наступним чином:

Private Declare Function playSound Lib "winmm.dll" _

Alias ​​"PlaySoundA" (ByVal lpszSoundName As String, _

ByVal hMod As Long, ByVal uFlags As Long) As Long

Параметри: lpszSoundName - ім'я WAV-файлу, системного події або ресурсу, які треба відтворити, hMod - джерело відтворення. Якщо джерело - файл або системна подія, то hMod = 0, а якщо джерело - ресурс з EXE або DLL файлу, то hMod повинен містити посилання на завантажений в пам'ять ресурс. uFlags - параметри відтворення.

Якщо треба відтворити файл, то необхідно встановлювати прапор SND_FILENAME. Якщо системна подія, то - SND_ALIAS. Якщо вказану подію або файл не існують, то функція програє звук, відповідний системну помилку.

Додаткові прапори позначають: SND_SYNC - синхронне відтворення (додаток очікує завершення програвання звуку і тільки потім продовжує роботу), SND_ASYNC - асинхронне відтворення (додаток не чекає завершення програвання звуку, а паралельно продовжує роботу), SND_NODEFAULT - в разі помилки (файл не знайдено) НЕ програється стандартний звук, SND_NOWAIT - якщо драйвер звукової карти зайнятий, не чекати звільнення.







Опис інших властивостей і методів класу.

'Зберігає ім'я останнього програного файлу

Private PlayFileName As String

'Зберігає ім'я останнього програного події

Private PlaySysMsgAlias ​​As String

'Зупинити поточний програвання звуку

Public Function PlayStop () As Boolean

Call playSound ( "", 0, SND_NODEFAULT)

'Віртуальне властивість - при присвоєнні

'Йому імені WAV-файлу програється звук

Property Let PlayFile (ByVal strWAVFileName As String)

Call playSound (strWAVFileName, 0, _

SND_ASYNC Or SND_NODEFAULT _

Or SND_FILENAME Or SND_NOWAIT)

'Віртуальне властивість - при читанні повертає

'Ім'я останнього програного файлу

Property Get PlayFile () As String

'При присвоєнні назви

'Події програється звук

Property Let PlaySys (ByVal strSysMsgAlias ​​As String)

Call playSound (strSysMsgAlias, 0, SND_ASYNC Or SND_NODEFAULT Or SND_ALIAS)

'Повертає ім'я останнього програного

Property Get PlaySys () As String

Додайте кнопку програвання файлу і подвійним клацанням миші по формі перейдіть у вікно редагування вихідного тексту форми.

У розділі описів додайте рядок:

Dim SNDPlayer As SoundPlayer '- об'єкт типу SoundPlayer

'Метод ініціалізації форми вже буде виглядати так:

Private Sub UserForm_Initialize ()

'Створення примірника об'єкта

Set SNDPlayer = New SoundPlayer

Set dlgFiler = New dlgFileOpen

'Метод обробки події - натискання

'Кнопки програвання звуку

Private Sub CommandButton1_Click ()

Збережіть набрані програми, перейдіть в таблицю Excel і натисніть кнопку запуску форми. Натисніть кнопку вибору файлу і вкажіть WAV-файл. В поле введення форми з'явиться його повне ім'я. Тепер натисніть кнопку програвання звуку і в повній мірі насолодитися роботою свого творіння.

Щоб досягти більш повного контролю над відтворенням звуку, наприклад, відтворювати звук в інтервалах від 2-ї секунди до 4,52 секунди, довільно зупиняти програвання, робити паузи і продовжувати відтворення, і т.д. треба піти іншим шляхом. Необхідно запрограмувати роботу програми з мультимедіа через MCI (Media Control Interface), що ми далі і будемо робити.

to be continued ...







Схожі статті