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

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

20.07.2020, 18:30. Показов 8147. Ответов 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
1407 / 866 / 93
Регистрация: 08.02.2017
Сообщений: 3,700
Записей в блоге: 2
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
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru