Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 02.10.2019
Сообщений: 8
Word

Добавление в контекстное меню кнопок по выполнению макросов

20.07.2020, 18:30. Показов 6704. Ответов 22

Студворк — интернет-сервис помощи студентам
Добрый день, имеется 3 макроса в normal. Возможно ли по аналогии с этим примером, добавить в контекстное меню вместо специальной вставки, 3 раздела на каждый из макросов, вот их имена: 1) "Прописью" 2) "Запрос" 3) "ИзменениеПГ"
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Sub newItemToContextMenu()
'Добавляем новую команду (пункт меню) в контекстное меню, вызываемое по щелчку правой кнопкой мыши
Dim cb As CommandBar  'Объявляем переменные
Dim cbb As CommandBarButton
Dim cbc As CommandBarControl
CustomizationContext = NormalTemplate  'Сохраняем изменения настроек в глобальном шаблоне Normal.dotm
On Error GoTo Ex  'В случае ошибки переходим к метке
Set cb = CommandBars("text")  'Определяем конкретную панель (меню), куда будем вставлять нашу команду
Set cbb = cb.FindControl(ID:=755)  'Определяем ссылку на конкретный пункт (кнопку) меню для возможностей дальнейшего поиска этого элемента
If Not cbb Is Nothing Then Exit Sub 'Если пункт меню уже существует, то происходит выход из макроса без действий
Set cbb = cb.Controls.Add(Type:=msoControlButton, ID:=755, Parameter:="new", Before:=1, Temporary:=False)   'Создаем пункт меню "Специальная вставка"
Set cbb = Nothing 'Освобождаем переменную и память 
Ex: 'метка для ошибки
End Sub
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2020, 18:30
Ответы с готовыми решениями:

Одно контекстное меню для нескольких кнопок
Как осуществить контекстное меню для несколько кнопок? Например в контекстном меню при нажатии на MenuItem такая функция...

Как создать контекстное меню. Например нажимая на richTextBox правой кнопкой мыши, мне бы предоставлялось контекстное меню
Как создать контекстное меню. Например нажимая на richTextBox правой кнопкой мыши, мне бы предоставлялось контекстное меню???

Реестр, добавление пункта в контекстное меню
Ребят, прошу прощения, если не туда пишу, но короче пытаюсь разобраться с этой темой уже пол дня. Есть документ с расширением например doc,...

22
0 / 0 / 0
Регистрация: 06.03.2025
Сообщений: 1
06.03.2025, 17:02
Студворк — интернет-сервис помощи студентам
Здравствуйте!
Подскажите уважаемые как исправить ошибку vba Word? Есть контекстное меню. Все работает и выполняется нормально, но когда курсор находится на нумерованном списке, то меню не "появляется".
Visual Basic
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Dim мое_место As Variant
Dim nameMacro As Variant
 
 
 
 
Private Sub Document_Open() 'создание кнопок меню (правая кнопка мыши)
    With Application.CommandBars("Text")
         .Reset
         For Each nameMacro In Array("Переход", "Выделен_Тхт")
             With .Controls.Add
                  .Caption = nameMacro
                  .OnAction = nameMacro
             End With
         Next
         .ShowPopup 'Проверка
    End With
мое_место = 0
End Sub
 
Sub Выделен_Тхт()
 
If (Selection.Type <> wdSelectionIP) Then
   какая_кн_нажата = InputBox("искать информацию " & Selection.Text & " в интернете?" & Chr(13) & _
" 1-е-лайбрари" & Chr(13) & _
" 2-диссертации" & Chr(13) & _
" 3-не искать")
Else
   MsgBox "Выдели текст"
End If
 
Select Case какая_кн_нажата
Case 1
 
какая_кн_нажата = "https://ya.ru/search/?text=" & "site:[url]www.elibrary.ru[/url] " & Selection.Text
ActiveDocument.FollowHyperlink Address:=какая_кн_нажата, NewWindow:=True, AddHistory:=True
 
Case 2
 
какая_кн_нажата = "https://ya.ru/search/?text=" & "site:[url]www.dissercat.com[/url] " & Selection.Text
ActiveDocument.FollowHyperlink Address:=какая_кн_нажата, NewWindow:=True, AddHistory:=True
 
Case 3
    
Case Else
 
End Select
End Sub
 
 
 
Sub Переход()
'проверка наличия метки для литературы или другого места (№2)
    If Bookmarks.Exists("где_я2") = False Then
ActiveDocument.Bookmarks.Add Name:="где_я1"
    'создаю метки // иначе будет таскать
    стр = InputBox("на какую страницу перейти?")
'переходим на ...-ю страницу и 3-ю строку в ней
ActiveDocument.Range.GoTo(What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=стр).GoTo(What:=wdGoToLine, Which:=wdGoToRelative, Count:=3).Select
'переходим к 1-му символу
Selection.Move Unit:=wdCharacter, Count:=1
    ActiveDocument.Bookmarks.Add Name:="где_я2"
GoTo 100
End If
 
' - ставлю флажок
If мое_место = 1 Then
    ActiveDocument.Bookmarks.Add Name:="где_я1"         'запоминаю где Я
    Selection.GoTo What:=wdGoToBookmark, Name:="где_я2" 'перехожу
    мое_место = 0
    Else
    ActiveDocument.Bookmarks.Add Name:="где_я2"
    Selection.GoTo What:=wdGoToBookmark, Name:="где_я1"
    мое_место = 1
End If
 
100
End Sub
Вложения
Тип файла: rar на форум.rar (28.9 Кб, 7 просмотров)
0
0 / 0 / 0
Регистрация: 14.08.2020
Сообщений: 18
12.03.2025, 17:21
Здравствуйте!

Вам нужно поиграться с командой

Set cb = CommandBars("text") 'Определяем конкретную панель (меню), куда будем вставлять нашу команду

При нахождении в тексте меню будет появляться, в нумерованном или маркированном списке нет.
Сам с этим сталкивался, но с таблицами. Так что поищите свойства CommandBars думаю поможет.
0
1336 / 775 / 84
Регистрация: 08.02.2017
Сообщений: 2,958
Записей в блоге: 1
13.03.2025, 02:33
Список всех контекстных меню можно получить так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub ПеречислениеКонтекстМеню()
    Dim cb As CommandBar
    With CreateObject("Scripting.Dictionary")
      For Each cb In CommandBars
          If cb.Type = msoBarTypePopup Then
              If Not .Exists(cb.Name) Then
                  .Add cb.Name, Empty
                  Debug.Print cb.NameLocal & vbCr & vbTab & cb.Name
              End If
          End If
      Next
    End With
End Sub
результ
Code
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
Буквицы
  Drop Caps
Концевые сноски
  Endnotes
Поля
  Fields
Отобразить поля
  Display Fields
Поле LISTNUM
  Field Display List Numbers
Поля формы
  Form Fields
Сноски
  Footnotes
Рамки
  Frames
Заголовки
  Headings
Связанные заголовки
  Linked Headings
Меню привязки
  Script Anchor Popup
Списки
  Lists
Встроенный рисунок
  Inline Picture
Встроенное полотно
  Inline Canvas
Меню горизонтальных линий
  Horizontal Line Popup
Таблицы
  Tables
Ячейки таблицы
  Table Cells
Заголовки таблицы
  Table Headings
Списки таблиц
  Table Lists
Шаблоны таблиц
  Table Pictures
Табличный текст
  Table Text
Вся таблица
  Whole Table
Связанная таблица
  Linked Table
Текст
  Text
Средство предварительного просмотра Word
  Word Previewer
Связанный текст
  Linked Text
Меню шрифта
  Font Popup
Шрифт для абзаца
  Font Paragraph
Format Inspector Popup in Normal Mode
  Format Inspector Popup in Normal Mode
Format Inspector Popup in Compare Mode
  Format Inspector Popup in Compare Mode
Орфография
  Spelling
Грамматика
  Grammar
Грамматика (2)
  Grammar (2)
Согласованность формата
  Format consistency
Строка состояния фоновой проверки
  Background Proofing Status Bar
Исправления
  Track Changes
Свойства рамки
  Frame Properties
Контекстное меню гиперссылки
  Hyperlink Context Menu
Меню автоподписи
  AutoSignature Popup
Поле автотекста
  Field AutoText
Схема документа
  Document Map
Фигуры
  Shapes
Кривая
  Curve
Узел кривой
  Curve Node
Сегмент кривой
  Curve Segment
Перемещаемый рисунок
  Floating Picture
Canvas Popup
  Canvas Popup
Объект OLE
  OLE Object
Элемент ActiveX
  ActiveX Control
Контекстное меню WordArt
  WordArt Context Menu
Режим поворота
  Rotate Mode
Примечание
  Comment
Organization Chart Popup
  Organization Chart Popup
Схема
  Diagram
Соединительная линия
  Connector
Индикатор исправлений
  Track Changes Indicator
Перевод на китайский язык
  Chinese Translation
Address Block Popup
  Address Block Popup
Greeting Line Popup
  Greeting Line Popup
Всплывающее меню поля слияния штрих-кода
  Barcode Merge Field Popup
Встроенный элемент ActiveX
  Inline ActiveX Control
Совместное редактирование в Word
  Word CoAuthoring
Ошибка XML: варианты
  XML Error Options
Рукописное замечание
  Ink Comment
Визитная карточка
  Business Card
Меню уравнений
  Equation Popup
Меню области верхнего колонтитула
  Header Area Popup
Меню области нижнего колонтитула
  Footer Area Popup
Параметры нумерации страниц Word
  Word Page Numbering Options
Система
  System
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.03.2025, 02:33
Помогаю со студенческими работами здесь

Добавление скрипта в контекстное меню файла
Уважаемые форумчане, подскажите. Возможно ли по средствам Python реализовать такую вещь! При нажатии правой кнопкой мыши на файл, в...

Добавление пункта в контекстное меню .csv
Добрый день! Пытаюсь добавить пункт в контекстное меню для своего скрипта. Работает он с файлами .csv. В реестре ситуация следующая: в HKCR...

Добавление своих пунктов в контекстное меню
Нужно в Excell добавить обработчик, запускающийся по нажатию правой кнопки мыши на выделенной ячейки(ячейках). Если выделена одна ячейка,...

Добавление пунктов в контекстное меню Windows
Подскажите какие функции,библиотеки win api необходимо использовать в данном случае??? Заранее благодарю......

Добавление пункта в системное контекстное меню
Проблема такая: при запуске приложения я хочу что б в меню (когда по папке или файлу щелкаешь правой кнопкой) добавлялся еще один пункт, по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »