VBA Как да зададете клавишна комбинация за изпълнение на макрос

Много любезен разработчик

Как мога да задам клавишна комбинация за изпълнение на макрос?

1) Автоматично при запис на макрос:

Натиснете Alt+F8.В диалоговия прозорец "Макро", намерете макроса, изберете името на макроса, към който искате да присвоите клавишна комбинация, и щракнете върху бутона "Опции.". След това в диалоговия прозорец „Опции за макроси“ можете да зададете клавишна комбинация за стартиране на избрания макрос.

зададете

Отворете VBA редактора (ляв ALT + F11) От лявата страна щракнете с десния бутон върху модула, Експортиране.

зададете

В новата книга направете същото, но с клавиша Import. Във файла комбинацията ще изглежда така:

комбинация

2) Временно, чрез макро код

Може би искате да включите клавишната комбинация за времетраенето на някои операции и да я изключите по време на по-нататъшна работа. Следният ред от код временно присвоява извикване Ctrl + m на процедурата MoveDown:

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, трябва да има обхватПубличен.

Наличните ключове за присвояване могат да се видят на връзката: WdKey Enumeration (Word)

Други методи и забележки:

автоучител

Нов потребител

С това ваше съобщение вие ​​ми давате надежда за разрешаване на дългосрочен проблем, който се появи в Word слентаинтерфейс! Следните осем комбинации не се поддават на стандартни методи за присвояване на макроси към тях в Word 2013: Alt+Num /. Alt+Shift+Num / Alt+Num *. Alt+Shift+Num * Alt+Num -. Alt+Shift+Num - Alt+Num +. Alt+Shift+Num +

Можете ли, драги Драгокас, да разберете какво точно пречи на това? Функцията RegisterHotkey API, която споменахте, ще помогне ли да се справи с тезитесникомбинации?

Много любезен разработчик

автоучител

Нов потребител

Скъпи Драгокас! Някак си странно. Опитвам се да намеря решение в няколко готини форума, което да ми позволи да приложа тези преки пътища към вътрешните макроси на Word, но никой дори не се е доближил до дъното на проблема. Къде са те - Windows експерти? Дори ако някой се опита да посъветва нещо - (включително тази тема за API функциите и намесата чрез административните шаблони на Office и редактирането на регистъра на Windows) - никой не може да разбере: коя програма в системата всъщност управлява тези комбинации. Преди това тези комбинации бяхадостъпни! Как мога да разбера къде: в системата или в програмата Word - това информация ли е? Какъв ресурс държи тези комбинации за себе си? Защо например някоя от посочените комбинации работи за стартиране на Explorer, Notepad, браузър, но не приема вътрешни команди на 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 и вместо да вмъкнете таблица, ще се отворят опции за страница. Така ли е или не?