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

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

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

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

Stepler (щёлк-щёлк!!)
...
Рейтинг: 0 / 0
17.11.2003, 16:16
    #32326472
Processor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как программно вставить новый путкт меню в Word
Вот выжимки для печати:
Код: 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
03.12.2003, 15:25
    #32342189
Tatka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как программно вставить новый путкт меню в Word
Проблема в том? что как создать меню подскажу, но только это меню будет появлять при каждом запуске макроса, лучше сделать на одном компе, а потом просто шаблон перекидывать и меню работать будет, вот текст
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
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / как программно вставить новый путкт меню в Word / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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