1

Тема: Проблема с макросами

Здравствуйте!
У меня есть следующая задача:
Записать следующие макрокоманды в шаблон при открытии которого:
− AutoNew, при запуске которой происходит отключение всех панелей и линейки прокрутки;
− AutoClose, при запуске которой происходит включение всех отключенных ранее панелей и линейки прокрутки;
− Печать, при запуске которой выполняется печать;
− Выход, при запуске которой происходит выход из программы
Word без сохранения изменений в документе.
Макросы написал в следующем виде:
AutoNew:
--
Sub AutoNew()
With Application.CommandBars("Status Bar")
.Visible = Not .Visible
End With
End Sub
--
AutoClose
--
Sub AutoClose()
With Application.CommandBars("Status Bar")
Not .Visible=Visible
End With
End Sub
--
Печать:
--
Sub printDoc()
ActiveDocument.PrintOut
End Sub
--
Как сделать выход не разобрался.. что-то типа:
--
Sub AutoClose()
  If ActiveDocument.Saved = False Then ActiveDocument.Save
End Sub
--

Вопрос состоит в следующем - почему-то выходит сообщение - "invalid outside procedure" на начале любого макроса (sub AutoClose(), например)

Post's attachments

1111цваы.png 50.96 Кб, файл не был скачан. 

You don't have the permssions to download the attachments of this post.

2

Re: Проблема с макросами

Проблема с макросами

3

Re: Проблема с макросами

Файл если нужно отправлю.
Кто может, помогите, пожалуйста!
Готов отблагодарить $ на телефон.

4

Re: Проблема с макросами

Выложите, пожалуйста, файл.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

5

Re: Проблема с макросами

Alex_Gur пишет:

Выложите, пожалуйста, файл.

Файл во вложении.

Меню не вызвается автоматически при открытии... При запуске в VB работает.

Post's attachments

PRIKAZ_1.dotm 24.46 Кб, 4 скачиваний с 2017-01-16 

You don't have the permssions to download the attachments of this post.

6

Re: Проблема с макросами

Ваш файл открыл. Макросов в нем не вижу. Они должны содержаться в этом же файле.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

7

Re: Проблема с макросами

Alex_Gur пишет:

Ваш файл открыл. Макросов в нем не вижу. Они должны содержаться в этом же файле.

Это файл-шаблон, при его обычном открытии создается документ на его основе, макросы все там, скрин прилагаю.

Post's attachments

фыавпфвпаывапывап.png 311.62 Кб, 1 скачиваний с 2017-01-16 

You don't have the permssions to download the attachments of this post.

8

Re: Проблема с макросами

Макросы нашел. Попробую завтра что-то Вам сказать.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

9

Re: Проблема с макросами

midex777 пишет:

Здравствуйте!
У меня есть следующая задача: ...

Там в коде строки с ошибкой укажите не фигурные кавычки («»), а прямые ("").

10

Re: Проблема с макросами

Alex_Gur пишет:

Макросы нашел. Попробую завтра что-то Вам сказать.

Мне очень срочно нужно... помогите, пожалуйста! Благодарность отправлю.

11

Re: Проблема с макросами

yshindin пишет:
midex777 пишет:

Здравствуйте!
У меня есть следующая задача: ...

Там в коде строки с ошибкой укажите не фигурные кавычки («»), а прямые ("").

Да, спасибо, я кавычки поменял, скрин старый.

На текущий момент работает только макрос Распечатать.

12

Re: Проблема с макросами

People, Help!
Благодарность отправлю. Дело 5 минут кто понимает.

13

Re: Проблема с макросами

Приветствую!

Постараюсь помочь, чем смогу.

1) Советую заменить макрос AutoNew на AutoOpen, если это Вас устроит.
Такой макрос у меня работает при запуске (убирает строку состояния внизу окна Word (Status Bar)):

Sub AutoOpen()
'Sub AutoNew()
    With Application.CommandBars("Status Bar")
      .Visible = Not .Visible
    End With
End Sub

2) AutoClose тоже работает. В том виде, как у Вас запрограммировано, файл при закрытии сохраняет изменения без запроса на сохранение:

Sub AutoClose()
   If ActiveDocument.Saved = False Then ActiveDocument.Save
End Sub

В нормальном случае был бы выдан запрос: "Вы хотите сохранить изменения в ... ?"

3) Макрос Document_Open у Вас не работает.
Попробуйте перенести его в раздел ThisDocument проекта (шаблона) PRIKAZ_1.dotm. Например, сначала в таком виде:

Private Sub Document_Open()
    'Call EntryPoint
    MsgBox ("Документ открыт")
End Sub

У меня это заработало.

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

14

Re: Проблема с макросами

midex777 пишет:

People, Help!
Благодарность отправлю. Дело 5 минут кто понимает.

AutoNew действительно резонно заменить на AutoOpen. Должно быть так:

Sub AutoOpen()
' AutoNew Макрос
    Application.CommandBars("Status Bar").Visible = False
    ActiveWindow.DisplayHorizontalScrollBar = False
    ActiveWindow.DisplayVerticalScrollBar = False
End Sub

Принт у вас работает. Далее вы описали 2 задачи: "Выход" и "AutoClose". Если вам надо, чтобы панели включались при закрытии документа, то необходимо совместить две задачи в одном макросе:

Sub AutoClose()
    'Документ сохранится без изменений при закрытии
    Application.CommandBars("Status Bar").Visible = True
    ActiveWindow.DisplayHorizontalScrollBar = True
    ActiveWindow.DisplayVerticalScrollBar = True
    ActiveDocument.Saved = True
End Sub

В ином случае вам не стоит называть этот макрос "AutoClose" т.к. это автомакрос, выполняющийся при событии закрытия документа. Назовите его как-нибудь иначе:

Sub ОтобразитьСтрокуСостояния()
    Application.CommandBars("Status Bar").Visible = True
    ActiveWindow.DisplayHorizontalScrollBar = True
    ActiveWindow.DisplayVerticalScrollBar = True
End Sub

Этот макрос придётся назначить на кнопку. А закрытие тогда будет выглядеть следующим образом (Если и его надо будет назначить на кнопку "Выход", то создайте отдельный макрос по вызову автопроцедуры):

Sub AutoClose()
    ActiveDocument.Saved = True
End Sub
Спасибо можно перевести на WebMoney-кошелёк R378231864568 или на Яндекс-деньги 410015093172871

15

Re: Проблема с макросами

Приветствую!

Благодарю всех за советы! Уже все давно сдано, разобрался)

А советы дельные, я почти так и сделал, только не использовал:

Application.CommandBars("Status Bar").Visible = True