powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / MS Office 2007 word KeyBinding
5 сообщений из 5, страница 1 из 1
MS Office 2007 word KeyBinding
    #38468764
Фотография VladislavVV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет

есть VB код в документе mydoc. docm
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
Private Sub Document_New()
  
  Dim af As String
  
  af = ActiveDocument.Bookmarks("af_").Range.Text
  ' MsgBox af
  If af = "." Then Exit Sub

  SubstantiveIssue
  SetAsAlreadyFilled
  
  RemoveKeyBinding
  AddKeyBinding
  
End Sub

Sub SubstantiveIssue()

   ' do somethings
   
End Sub

Sub SetAsAlreadyFilled()

   ' do somethings

End Sub

Sub AddKeyBinding()
    With Application
         ' \\ Do customization in THIS document
        .CustomizationContext = ActiveDocument
         
         ' \\ Add keybinding to this document Shorcut: Alt+Z
        .KeyBindings.Add KeyCode:=BuildKeyCode(Arg1:=wdKeyAlt, Arg2:=wdKeyZ), KeyCategory:=wdKeyCategoryCommand, Command:="SubstantiveIssue"
        
      ' MsgBox Application.CustomizationContext
      ' MsgBox "AddKeyBinding = " & .FindKey(BuildKeyCode(Arg1:=wdKeyAlt, Arg2:=wdKeyZ)).Command
    End With
    
  ' MsgBox "add Binding = " & Application.FindKey(BuildKeyCode(Arg1:=wdKeyAlt, Arg2:=wdKeyZ)).Command
End Sub

Sub RemoveKeyBinding()
  With Application
    .CustomizationContext = ActiveDocument
    .FindKey(BuildKeyCode(Arg1:=wdKeyAlt, Arg2:=wdKeyZ)).Clear
  End With
End Sub

Private Sub Document_Open()
 ' MsgBox "open Binding = " & Application.FindKey(BuildKeyCode(Arg1:=wdKeyAlt, Arg2:=wdKeyZ)).Command
 RemoveKeyBinding
 AddKeyBinding
End Sub

Private Sub Document_Close()
 RemoveKeyBinding
End Sub




идея: повесить Hot key Alt+Z на выполнение "SubstantiveIssue"

вопрос: когдя я просто открываю документ - то все ок. Когда я делаю ПКМ -> New - то получаю ERROR "Run-time error 5346" на строке
Код: vbnet
1.
.KeyBindings.Add KeyCode:=BuildKeyCode(Arg1:=wdKeyAlt, Arg2:=wdKeyZ), KeyCategory:=wdKeyCategoryCommand, Command:="SubstantiveIssue"



что я делаю не так?
...
Рейтинг: 0 / 0
MS Office 2007 word KeyBinding
    #38468838
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladislavVV,

Надо полагать, что SubstantiveIssue нет в новом документе.
...
Рейтинг: 0 / 0
MS Office 2007 word KeyBinding
    #38468906
Фотография VladislavVV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lbppbVladislavVV,

Надо полагать, что SubstantiveIssue нет в новом документе.
есть. эта функция(процедура ?) - отрабатывает 100%, а лишь потом появляется ошибка.
...
Рейтинг: 0 / 0
MS Office 2007 word KeyBinding
    #38468974
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladislavVVlbppbVladislavVV,

Надо полагать, что SubstantiveIssue нет в новом документе.
есть. эта функция(процедура ?) - отрабатывает 100%, а лишь потом появляется ошибка.

Я думаю, что происходит следующее. Когда вы открываете документ, с вашим кодом, то исполняются процедуры RemoveKeyBinding и AddKeyBinding. При чем вторая назначает "новую команду", код которой есть в документе. Когда вы открываете новый документ, то сначала исполняются SubstantiveIssue и SetAsAlreadyFilled, которые все еще доступны из старого документа. Затем RemoveKeyBinding, которая уже работает с новым документом (With Application), а потом AddKeyBinding, которая не может найти SubstantiveIssue в новом документе.
...
Рейтинг: 0 / 0
MS Office 2007 word KeyBinding
    #38468977
Фотография lbppb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladislavVVlbppbVladislavVV,

Надо полагать, что SubstantiveIssue нет в новом документе.

есть. эта функция(процедура ?) - отрабатывает 100%, а лишь потом появляется ошибка.

На будущее, в VBA, процедура не возвращает результат в отличие от функции.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / MS Office 2007 word KeyBinding
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]