Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
25.04.2024, 12:15:17

Войти
Добавляйтесь в нашу группу ВКонтакте - будьте в курсе всех новых событий сайта, узнавайте первым обо всех акциях и новых статьях!
33 243 Сообщений в 5 458 Тем от 6 763 Пользователей
Последний пользователь: tetrapack
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по Word и VBA
| | |-+  Не выводить кнопку на печать.
Страниц: [1]   Вниз
Печать
Автор Тема: Не выводить кнопку на печать.  (Прочитано 5396 раз)
0 Пользователей и 1 Гость смотрят эту тему.
McConst
Постоялец
***

Репутация: +1/-0
Офлайн Офлайн

Сообщений: 238


Просмотр профиля E-mail
« : 03.08.2016, 12:46:00 »

На листе word имеется кнопка, нажатие которой вызывает макрос. Нужно, чтобы перед печатью документа кнопка скрывалась и на печать не выводилась. Хотел в событии _DocumentBeforePrint сделать кнопку невидимой, но у doc.commandbutton1 нет свойства .visible.
Что делать?
Похожую тему нашел тут http://www.programmersforum.ru/showthread.php?t=58575 и даже вариант ответа, но он технически мне не понятен.
Нужно внести кнопку в поле автоматизации {If Mode > 1 "{CONTROL Forms.CommandButton.1 \s}" ""}. Например, что такое Mode - закладка, переменная Docvariables или ещё что-нибудь?, что такое \s ? Нет инструкции по шагам.
Записан
McConst
Постоялец
***

Репутация: +1/-0
Офлайн Офлайн

Сообщений: 238


Просмотр профиля E-mail
« Ответ #1 : 05.08.2016, 11:03:37 »

Так и не решил поставленную задачу.
Выкрутился по другому. Кнопка лежит на созданном мной документе. Раз так, то можно кнопку разместить не в документе, а в меню Word, которое создается автоматически при открытии. Данное решение пока работает для офиса 2003, для другого офиса потом буду думать.
Процедура SetMenu  вызывается из модуля (см. код ниже) при открытии файла по событию Document_Open()
Код: (vb)

Option Explicit

Private Const GLPAMenuCount As Byte = 3 'Количество пунктов меню ГЛПА (ГЛПА - название организации)

Public Sub SetMenu()
'Процедура создает меню для включения макросов надстройки
Dim MyBar As CommandBar, MyButton(1 To GLPAMenuCount) As CommandBarButton
Static GLPAMenu As CommandBarControl
Dim i As Byte


#If VBA7 Then
'В Офис 2010 ленту надстроек будем настраивать через API


#Else
'В Офис 2003 меню можно создать программно
    Set MyBar = Application.CommandBars("Menu Bar")

    'Нужно ставить проверку, имеется ли уже созданное меню ГЛПА
    If GLPAMenu Is Nothing Then
        Set GLPAMenu = MyBar.Controls.Add(msoControlPopup, 1, , , True)
        GLPAMenu.Caption = "ГЛПА" 'Создаем вкладку ГЛПА на панели меню
        
        
        With GLPAMenu.Controls
           For i = 1 To GLPAMenuCount
                Set MyButton(i) = .Add(msoControlButton, 1, , , True) 'Создаем кнопки в меню
           Next i
        End With
        
        With MyButton(1)
           .Caption = "Погода"
           .Style = msoButtonCaption
           .OnAction = "Weather.weather"
        End With
        
        With MyButton(2)
           .Caption = "Акт списания"
           .Style = msoButtonCaption
           .OnAction = "Reports.Act"
        End With
        
        With MyButton(GLPAMenuCount)
           .Caption = "Отправить файл по почте"
           .Style = msoButtonCaption
           .OnAction = "Internet.SendMail"
        End With
        GLPAMenu.Visible = True
    End If
#End If
End Sub
« Последнее редактирование: 05.08.2016, 11:06:47 от McConst » Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru