Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / MS Office 2007 word KeyBinding / 5 сообщений из 5, страница 1 из 1
18.11.2013, 16:00
    #38468764
VladislavVV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Office 2007 word KeyBinding
Привет

есть 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
18.11.2013, 16:42
    #38468838
lbppb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MS Office 2007 word KeyBinding
VladislavVV,

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

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

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

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

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

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

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


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