VBA Як задати поєднання гарячих клавіш для запуску макросу Форум з інформаційної безпеки
Very kind Developer
Як встановити поєднання гарячих клавіш для запуску макросу?
1) Автоматично при записі макросу:
Натисніть Alt+F8.У діалоговому вікні "Макрос" потрібно визначити місце знаходження макросу, вибрати ім'я макросу, для якого необхідно призначити поєднання клавіш і натиснути кнопку "Параметри.". Після цього, у діалоговому вікні "Параметри макросу" можна встановити сполучення клавіш для запуску вибраного макросу.

Відкрийте редактор VBA (лівий клавіші ALT + F11) У лівій частині натисніть правою кнопкою по модулю, Export.

У новій книзі зробіть так само, але з клавішею Import. Всередині файлу поєднання виглядатиме так:

2) Тимчасово, через код макросу
Можливо, ви хочете включити поєднання клавіш на час виконання якихось операцій, і вимкнути його при подальшій роботі. Наступний рядок коду тимчасово надає процедурі MoveDown виклик поєднанням клавіш Ctrl+m:
3) Постійно, через код макросу:
Щоб змінити клавішу швидкого доступу за допомогою коду, використовуйте рядок:
1) Під час запису макросу
Для Word 2003.Меню "Сервіс",Макрос,Почати запис.Виберіть, де зберігати макрос -поточному документі або в Normal.dot(тоді макрос буде доступний з-під будь-якого документа) Натиснітьпіктограму Клаіватури.

Поставте курсор у поле "Нове сполучення клавіш" та натисніть на клавіатурі бажане поєднання. Виберіть розташування, де хочете зберегти поєднання - в поточному документі, або доступне з усіх документів.

Виконайтедії у документі, які хочете записати. Наприкінці завершіть запис кнопкою "Стоп":
2) Програмно з-під коду макросу (тимчасове, для поточного документа)
У деяких випадках буває необхідно в пакетному режимі призначити Word тим чи іншим командам і макросам «гарячі клавіші». Макрокоманда, що призначає «гарячі клавіші», має такий важливий вид:
wdKey , [wdKeyControl,] [wdKeyShift,] [wdKeyAlt] де: -wdKey– натискання клавіші, що відповідає вказаній літері або цифрі, -wdKeyControl– натискання клавішіCtrl, -wdKeyShift– натискання клавішіShift, -wdKeyAlt– натискання клавішіAlt.
Наприклад:wdKeyS, wdKeyControl– поєднання клавішCtrl+S wdKeyQ, wdKeyControl, wdKeyAlt– поєднання клавішCtrl+Alt+Q wdKeyP, wdKeyControl, wdKeyShift, wdKeyAlt– поєднання клавішCtrl+Shift+Alt+P
Елемент можна взяти з вікнаНалаштування клавіатури(дляWord 2013:Файл – Параметри – Налаштувати стрічку – Настройка…). Наприклад:FileSave- команда збереження файлуInsertPicture- вставка малюнка з графічного файлу і т.д.
Для опису найменування макросу використовується така конструкція:
Приклад модуля, що призначає «гарячі клавіші»:
Щоб мати можливістьвидалити призначене поєднанняклавіш, необхідно використовувати трохи інший синтаксис при призначенні комбінації (з ключовим словомset):
Приклад призначення та скасування:
3) Програмно з-під коду макросу (постійне, для поточного документа)Це просто хак, який виконує роль постійного призначення на базі попереднього прикладу. Ми просто будемовикликати KeyBindings через подію автозапуску документа.
А щоб поєднання не скидалося ми його щоразу відновлюватимемо за допомогою події WindowActivate.
Нижченаведений код помістіть у модульThisDocument. та перезапустіть Word:
Примітка:Макрос, що викликається через KeyBindings, повинен мати область видимостіPublic.
Доступні для призначення клавіші можна переглянути за посиланням: WdKey Enumeration (Word)
Інші способи та зауваження:
auto-teacher
Новий користувач
Цим своїм повідомленням Ви вселяєте в мене надію на вирішення багаторічної проблеми, яка з'явилася в Word'ах зстрічковимінтерфейсом! Наведені нижче вісім комбінацій не піддаються штатними способами для призначення на них макрокоманд у Word 2013: Alt+Num /. Alt+Shift+Num / Alt+Num *. Alt+Shift+Num * Alt+Num -. Alt+Shift+Num - Alt+Num+. Alt+Shift+Num +
Чи можете Ви, шановний Dragokas, з'ясувати, що саме цьому перешкоджає? Чи не допоможе згадана Вами API-функція RegisterHotkey впоратися з цимитугимипоєднаннями?
Very kind Developer
auto-teacher
Новий користувач
Шановний Dragokas! Якось дивно виходить. На кількох крутих форумах я намагаюся знайти рішення, яке б дозволило мені застосувати зазначені поєднання для внутрішніх макрокоманд Word, і ніхто навіть близько не підійшов до суті проблеми. Де ж вони – знавці Windows? Навіть якщо хтось і намагається щось порадити - (включаючи і цю тему API-функцій, і втручання через адміністративні шаблони Офісу, і редагування реєстру Windows) - ніхто не може дізнатися: а яка власне прога в системі цими комбінаціями розпоряджається. Раніше ці поєднання булидоступними! Як все-таки дізнатися, де: у системі чи програмі Word - лежить ця інформація? Який ресурс тримає собі ці поєднання? Чому, наприклад, будь-яке із зазначених поєднань спрацьовує для запуску Провідника, Блокнота, браузера, але не приймає внутрішні команди Word? Щодо Вашого коду, то мені не ясно, що означає: "зловити натискання зареєстрованого сполучення клавіш"? Як це? Начебто воно в якійсь службі зареєстроване, а ми його раніше впіймаємо, а потім собі візьмемо? То що? Чи не простіше визначити, де зареєстровані ці поєднання за промовчанням? І скасувати їх.
У зв'язку з цим я маю нагадати ще одну проблему, яка мені попалася у Windows 8 і Word 2013. Вона мені крові зіпсувала, поки дивом не прийшло рішення. Суть така: є дві кнопки Alt – ліва та права, але окремо працює лише одна ліва. Щоб побачити це, треба Вам перевірити все на своєму комп'ютері (Ви ж нещодавно Word 2013 поставили?). 1. Призначте для макросу TableInsertTable таке поєднання: Alt+t. 2. А для макросу PageSetupMargins призначте: Ctrl+Alt+t. Тепер: якщо Ви натиснете Left_Alt+t - відбудеться вставка таблиці. якщо натиснете Left_Ctrl+Left_Alt+t - відкриються параметри сторінки. а якщо натиснете Right_Alt+t, то смію припустити, що у Вашому Word'і правий Alt спрацює як Ctrl+Alt, і замість вставки таблиці відкриються параметри сторінки. Так це чи ні?