powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как программно вставить новый путкт меню в Word
10 сообщений из 10, страница 1 из 1
как программно вставить новый путкт меню в Word
    #32300673
Tatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как программно в Word создать новый пункт меню в строке меню (там же где и меню ФАЙЛ, ПРАВКА, и т.д.). Чтобы в нем находились подменю нужные мне скажем запуск моего макроса, печать.
Спасибо заранее .....
...
Рейтинг: 0 / 0
как программно вставить новый путкт меню в Word
    #32300759
DionX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Совет один: эксперементируй... Тем более в МС Оffce это довольно просто. Включаешь запись макроса, делаешь мышкой что тебе нужно, а потом разбираешься в том, что тебе понаписалось в макрос.
Если я провильно тя понял, то примерно енто будет так:

Set NewMnu = Application.CommandBars("File").Controls.Add(msoBarTypeMenuBar)
NewMnu.Caption = "Мой пункт меню в меню 'Файл'"
...
Рейтинг: 0 / 0
как программно вставить новый путкт меню в Word
    #32301276
Tatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дело в том что я незнаю как это делаеться даже без макроса, добавить новую панель, новую кнопку, это запросто, а вот именно в строку меню, я не знаю, но сейчас попробую, что вы посоветовали, судя по excel очень похоже, все равно спасибо
...
Рейтинг: 0 / 0
как программно вставить новый путкт меню в Word
    #32324332
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tatka , разобрались с этим вопросом? А кто знает как это сделать в *.Dot ???

Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
как программно вставить новый путкт меню в Word
    #32324474
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Stepler:
Открой Word и посмотри Сервис-->Шаблоны и надстройки.
...
Рейтинг: 0 / 0
как программно вставить новый путкт меню в Word
    #32324539
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Processor , Спасибо, а я и не знал... Мне-то необходимо программным способом задать кнопку с макросом на панели инструментов. Кнопку я создаю, но когда документ, содержащий макрос для этой кнопки, закрыт - то при нажатии на кнопку открывается сначала документ (носитель макроса), а уж потом выполняется сам макрос. Мне же нужно, чтобы после создания кнопки с макросом, она (то бишь кнопка) работала как стандартные в панели инструментов....

Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
как программно вставить новый путкт меню в Word
    #32325067
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Stepler:
А а подумал, что ты знал-знал, да забыл:
твой ответ "Tatka , разобрались с этим вопросом?" прозвучал как "sapienti sat!"
Cам я Word'овских надстроек не делал, но, по аналогии с Excel, это реализуемо. К совету DionX'а добавлю, что, кроме Help'а, надо бы почитать и другие книги, в которых объект Document описан более связно.
...
Рейтинг: 0 / 0
как программно вставить новый путкт меню в Word
    #32325826
Фотография Stepler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TO Processor ещё раз !!!
Повторяю сложности в написании создания/удаления/переназначения кнопке(ам) макросов у меня нет, необходимо это создать в *.dot (естественно не ручками на своем компе). Если же Вы знаете как это делать в Excel - подскажите, плз!

Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
как программно вставить новый путкт меню в Word
    #32326472
Processor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот выжимки для печати:
Код: plaintext
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.
Option Explicit
'----------------------------------------------'
'Модуль "ЭтаКнига"                             '
'(в программном коде - ThisWorkbook)           '
'Если надстройка объёмная по коду, этот модуль '
'оформляется как интерфейс -                   '
'аналог класса, содержащего только методы.     '
'Реализация методов переносится в модули.      '
'----------------------------------------------'
Private SummProp As CommandBarButton  'пункт меню "Сумма прописью"
Private Const PropMnuName As String = "Пропись"
Private Const SumPMnuName As String = "Сумма прописью"
Private Const CntPMnuName As String = "К-во прописью"

Private Sub MakeAddIn()
'Эти операции можно делать и вручную,
'однако лень - двигатель прогресса.
'
'Перед преобразованием книги в Add-In
'дайте ей (надстройке) имя и понятный комментарий.
'В рабочей книге (там, где юзер видит Excel)
'щёлкните Файл -->Свойства-->Документ и заполните поля:
 
'"Название" - то, что увидит юзер в списке Add-Ins;
' "Заметки"  - то, что увидит юзер в рамке
'с наименованием Add-In, поместив курсор на наименование.
'
'Поместите книгу с отлаживаемым кодом
'в папку Application.Path &  "\Library" 
'и однократно выполните этот макрос из IDE:
    With ThisWorkbook
        .IsAddin = True     'Скрывает все рабочие листы.
        .SaveAs .Path &  "\"  & Left(.Name, Len(.Name) -  1 ) &  "a" 
    End With
End Sub

Private Sub MakeSimpleWorkbook()
'Рабочие листы Add-In скрыты. Для их отображения
'(там целесообразно размещать шаблоны, справочники и пр.)
'откройте надстройку, Alt-F11 и выполните этот макрос:
    With ThisWorkbook
        .IsAddin = False
        .SaveAs .Path & "\" & Left(.Name, Len(.Name) - 1) & "s"
        Dim sh As Worksheet
        For Each sh In .Worksheets
            sh.Visible = xlSheetVisible
        Next sh
    End With
End Sub
Private Sub Workbook_AddinInstall()
'Occurs when the workbook is installed as an add-in
'Т.е, когда пользователь взводит чек-бокс
'напротив строки с наименованием надстройки
'в сиске надстроек, п. меню "Сервис-->Надстройки".
    Application.ScreenUpdating = False
'Встраивание меню. (В данном случае - контекстно-зависимого):
    CreateInWordsMenu
End Sub

Private Sub Workbook_AddinUninstall()
'Occurs when any add-in workbook is uninstalled
'Пользователь может быть уведомлён, что имеющиеся
'пункты (контекстно-зависимого)меню более недоступны:
    DelInWordsMenu
End Sub

Sub CreateInWordsMenu()     'контекстно-зависимое.
Dim p As CommandBar         'панели инструментов
Dim t As CommandBarControl  'пункты меню в этих панелях
For Each p In Application.CommandBars           'перебираем все панели инструментов
    If InStr(1, p.Name, "Cell") > 0 Then        'и ищем панель  "Ячейка" :
        For Each t In p.Controls                'если там есть панель "Пропись",
            If t.Caption = PropMnuName Then Exit Sub   'то и её пункты уже встроены.
        Next t                                  'панель "Пропись"не найдена,
        With p.Controls                         'поэтому добавляем её и её пункты:
             Set SummProp = .Add(msoControlButton)
             With SummProp
                  .Caption = SumPMnuName
                  .TooltipText =  "Сумма прописью содержимого активной ячейки" 
                  .OnAction =  "SumProp" 
                  .Visible = True
             End With
             Set CntPProp = .Add(msoControlButton)
             With CntPProp
                  .Caption = CntPMnuName
                  .TooltipText =  "К-во прописью содержимого активной ячейки" 
                  .OnAction =  "CountProp" 
                  .Visible = True
             End With
         End With
         MsgBox  "Можно выводить суммы прописью"  & vbCrLf & _
                 "под суммой-числом в ячейке с курсором" , _
                vbInformation + vbOKOnly,  "Add-In 'Пропись'" 
         Exit Sub           'мавр может уходить...
    End If
Next p
End Sub

Public Sub DelInWordsMenu()
Dim p As CommandBar, t As CommandBarControl
For Each p In Application.CommandBars
    If InStr(1, p.Name, "Cell") > 0 Then
       For Each t In p.Controls
            If t.Caption = SumPMnuName Or _
               t.Caption = CntPMnuName Then
                MsgBox "Пункт меню ' " & t.Caption & " ' удалён.", _
                vbInformation + vbOKOnly, "Add-in 'Пропись'"
                t.Delete
            End If
       Next t
    End If
Next p
End Sub

Sub SumProp(ByRef R As Range)
'............
End Sub

Sub CountProp(ByRef R As Range)
'............
End Sub
...
Рейтинг: 0 / 0
как программно вставить новый путкт меню в Word
    #32342189
Tatka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема в том? что как создать меню подскажу, но только это меню будет появлять при каждом запуске макроса, лучше сделать на одном компе, а потом просто шаблон перекидывать и меню работать будет, вот текст
Public Sub NewMenu()

End Sub
Dim MenuBar As Office.CommandBar
Dim popMenu As Office.CommandBarPopup
Dim cmd As Office.CommandBarButton
Dim item(2) As String
Dim prog(2) As String
Dim namemenu As String
Dim num As Integer
Call deleting_menu(namemenu)
namemenu = "Меню"
item(1) = "Start"
prog(1) = "Smg"
'берём ссылку на панель мeню
Set MenuBar = CommandBars("Menu Bar")
'создаём новое меню и сохраняем на него ссылку
Set popMenu = MenuBar.Controls.Add(Type:=msoControlPopup, Before:=1)
'Настраиваем созданное меню
With popMenu
.BeginGroup = True
.Visible = True
.Caption = namemenu
.TooltipText = "Нажимай!"
End With
'Это необязательно(убирает начало группы с меню файл),но так нет разделитетя
MenuBar.Controls("Файл").BeginGroup = False

For num = 1 To 1
'создаём кнопку и сохраняем ссылку
Set cmd = popMenu.Controls.Add(Type:=msoControlButton, Before:=1)
'настраиваем эту кнопку
With cmd
'можно впихнуть картинку, так будет красивее
'.Style = msoButtonAutomatic
'.Picture = LoadPicture("C:\...")
.Caption = item(num)
.OnAction = prog(num)
End With
Next num
'чистим память
Set cmd = Nothing
Set popMenu = Nothing
Set MenuBar = Nothing

'****
End Sub
Sub deleting_menu(sName As String)
Dim MenuBar As Office.CommandBar
Set MenuBar = CommandBars("Menu Bar")
MenuBar.Controls(sName).Delete
Set MenuBar = Nothing
End Sub

Sub Msg()
MsgBox "Работает!!!", vbInformation
End Sub
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как программно вставить новый путкт меню в Word
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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