Vba word при открытии документа

Офисные приложения Word и Excel имеют широкий функционал, который избыточен для рядового пользователя. Но, как всегда это бывает, нужной функции под рукой, в самый неподходящий момент, может не оказаться.

Как мы знаем, для таких случаев разработчик снабдил все приложения из пакета Microsoft Office встроенным языком программирования Visual Basic for Applications (VBA).

Весь программный код оформляется в виде процедур (макросов) или функций. И сейчас мы разберем, как автоматически запускать макросы при открытии текстового документа Word или рабочей книги Excel.

Видеоурок по данной теме «Автозапуск макросов в Word и Excel» вы можете найти на нашем Youtube-канале «Учите компьютер вместе с нами!»

Прежде всего, следует помнить, что обычные документы хранятся в файлах типа *.docx или *.xlsx и не предусматривают наличие макросов. Поэтому, первое, что нужно сделать, это включить такую поддержку. Для этого, во вкладке «Файл» выбираем пункт «Сохранить как» и в открывшемся окне «Сохранение документа«, в списке «Тип файла» выбираем «Документ Word с поддержкой макросов» или «Книга Excel с поддержкой макросов«, указываем требуемое имя файла и нажимаем кнопку «Сохранить«.

*Каждый рисунок можно увеличить щелчком левой кнопки мыши по нему

После указанных манипуляций, наши сохраненные файлы будут иметь расширения *.docm или *.xlsm. Вход в редактор VBA выполняется нажатием сочетания клавиш <ALT>+<F11>.

Дальнейшие действия, в зависимости от того, с каким файлом мы работаем, Word или Excel, будут отличаться. Поэтому, рассмотрим автозапуск макросов для каждого из этих приложений в отдельности.

1. Автозапуск макросов в Word. Здесь все предельно просто. Если вы хотите, чтобы макрос автоматически выполнялся при открытии документа, тогда вам нужно присвоить ему специальное имя «Autoopen«.

Находясь в редакторе VBA, выбираем пункт меню «Insert/Вставка«, «Module/Модуль«. Далее, в открывшемся окне модуля набираем программный код:

Public Sub Autoopen()

    …

End Sub

Начало макроса записывается командой Public Sub, конец — End Sub. Все что находится между ними — это команды VBA, которые будут автоматом выполняться при открытии данного документа, например:

Команда MsgBox («Hello, World!») выводит на экран текстовое сообщение «Hello, World!».

2. Автозапуск макросов в Excel. Как ни странно, но в Excel такой подход не срабатывает. Здесь «Autoopen» не является зарезервированным именем и такой макрос не будет выполняться автоматически при открытии книги.

Вместо этого, надо указать, что когда с объектом «Рабочая книга» случается событие «Открыть«, то нужно выполнить заданный набор команд.

Для этого, в редакторе VBA, в окне «Project» выполняем двойной щелчок левой кнопкой мыши на объекте «ЭтаКнига«. В открывшемся окне модуля, из верхнего левого списка выбираем объект «Workbook«, а из правого списка — событие «Open«, как показано на рисунке ниже.

В результате, текст макроса автоматически приобретает вид:

Private Sub Workbook_Open()

    …

End Sub

То есть, название макроса записывается в формате: Объект_Событие. Теперь, вместо многоточия прописываем требуемый программный код. В нашем случае, это команда MsgBox («Hello, World!»).

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

Как сообщалось на нашем сайте ранее, файлы Excel можно открыть в разных окнах.

0 / 0 / 0

Регистрация: 28.08.2007

Сообщений: 171

1

Автоматический запуск формы при открытии документа

26.11.2007, 15:08. Показов 14630. Ответов 3


Студворк — интернет-сервис помощи студентам

Народ помогите плиз, надо что бы при открытии заданного документа Word например 1.doc поверх текста появлялась UserForm, вставить то я ее вставил, а вот как сделать чтоб она автоматом при открытии именно этого документа появлялась ни как не допру. Заранее спасибо.



0



2 / 2 / 0

Регистрация: 22.11.2007

Сообщений: 70

26.11.2007, 17:20

2

Надо вставить МАКРО не в NORMAL.DOT, а в нужный документ (1.doc), и запускать его автоматически при открытии документа (используя события OPEN).

Другой путь — для открытия нужного документа запускать WORD с ключом ‘/m’ (например, для МАКРОС MAIN из NORMAL.DOT использовать командную строку ‘Full WORD name/word.exe’ /mMAIN)



0



0 / 0 / 0

Регистрация: 28.08.2007

Сообщений: 171

27.11.2007, 19:34

 [ТС]

3

Спасибо конечно, но что то не работает… Если могешь примерчик и по подробнее, а то я ужо себя недогоном осущаю… Спасибо.



0



SIG

2 / 2 / 0

Регистрация: 22.11.2007

Сообщений: 70

28.11.2007, 10:14

4

Выполни следующее:

1. Создай нужный документ (например, DOC1.DOC);
2. Открой его и войди в редактор VBA;
3. Открой проект Project(DOC1) (но НЕ NORMAL.DOT!);
4. Открой в этом проеткте модуль ThisDocument (папка MicrosoftWord объекты);
5. Вставь в этот модуль следующий простой код:

Visual Basic
1
2
3
4
5
Option Explicit
 
Private Sub Document_Open()
  MsgBox 'HELLO! Document DOC1 is open!'
End Sub

6. Сохрани документ (вместе с документом автоматически сохранится приписанный ему код).

Теперь, всякий раз при открытии документа DOC1.DOC (точнее, сразу же после его открытия) будет появляться Message Box: ‘HELLO! Document DOC1 is open!’ (естественно, на вопрос ‘Включать ли МАКРО’ при открытии документа следует отвечать ДА).

Вместо указанного выше простого кода можно вставить любой другой (Load UserForm, UserForm.Show etc.), который будет выполняться при открытии документа.

Удачи!



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

28.11.2007, 10:14

Помогаю со студенческими работами здесь

Запуск макроса при открытии документа
Добрый день!
В VBA еще новичок, поэтому буду говорить, как мне подсказали, если что исправьте. …

Автоматический запуск макроса при открытии любой книги, которая соответствует конкретным условиям
Добрый день, уважаемые форумчане! Нужна ваша помощь:)
Ситуация следующая.
Мне на почту каждый…

Запуск пользовательской формы при открытии файла
Пока нашел только такой способ

Private Sub Workbook_Open()
Application.Visible = False

Запуск определенной формы при открытии определенного листа
Здравствуйте помогите мне с такой задачей, Есть у меня &quot;Лист1&quot;, &quot;Лист2&quot;, &quot;Лист3&quot;, &quot;Лист4&quot;, нужно,…

Автоматический запуск формы
Как сделать чтобы форма автоматически открывалась. Чтобы в ней можно было вводить поля и после…

Автоматический запуск музыки при открытии проекта.
подскажите как сделать…..
нужно нажать на форме кнопки и должна заиграть музыка…..
или при…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

4

How can I make my VBA macro running automatically when the Word document is opened, without starting the macro from the developer ribbon or a button?

so far I tried this and it isn’t working for me:

«FindChar» sub is working well when I run it. I’m not getting any error messages. It seems the script isn’t running.

Private Sub Document_open()

   Call FindChar

End Sub

Sub FindChar()

   Dim oTbl As Table
   Dim stT As Long, enT As Long
   Dim stS As Long, enS As Long

   With Selection.Find             ' Replacement
      .Text = "["
      .Replacement.Text = ""
      .Forward = True
      .Wrap = wdFindContinue
   End With

   For Each oTbl In ActiveDocument.Tables

    If oTbl.Shading.BackgroundPatternColor = RGB(176, 255, 137) Then 
    
        oTbl.Columns(1).Select

        Do While Selection.Find.Execute

            stT = oTbl.Range.Start                    
            enT = oTbl.Range.End

            stS = Selection.Range.Start               
            enS = Selection.Range.End

            If stS < stT Or enS > enT Then Exit Do

            Selection.Collapse wdCollapseStart
            Selection.Find.Execute Replace:=wdReplaceOne
            
        Loop
        Selection.Collapse wdCollapseEnd
    
    End If
    
Next

End Sub

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Сообщений [ 11 ]

1 13.05.2010 14:30:21

  • mikkelle
  • полковник
  • Неактивен
  • Зарегистрирован: 21.01.2010
  • Сообщений: 227
  • Поблагодарили: 12

Тема: Выполнение требуемого макроса при запуске Word

Требуется при создании документа из шаблона Word, запустить на выполнение один из макросов.
Можно ли передать «условие» для запуска макроса через ярлык шаблона?
Условие — перед выполнением приложение Word закрыто.

2 Ответ от andrkar 13.05.2010 18:05:08

  • andrkar
  • Модератор
  • Неактивен
  • Откуда: Томск
  • Зарегистрирован: 10.03.2010
  • Сообщений: 431
  • Поблагодарили: 26

Re: Выполнение требуемого макроса при запуске Word

внешняя ссылка
внешняя ссылка
внешняя ссылка
Вроде бы достаточно много информации по ключам запуска

3 Ответ от viter.alex 13.05.2010 18:43:58

  • Выполнение требуемого макроса при запуске Word
  • viter.alex
  • Модератор
  • Неактивен
  • Откуда: Харьков, Украина
  • Зарегистрирован: 21.12.2009
  • Сообщений: 884
  • Поблагодарили: 140

Re: Выполнение требуемого макроса при запуске Word

Если макрос всегда один и тот же, то можно прописать его в стандартную процедуру, выполняющуюся при открытии документа. При редактировании шаблона откройте модуль ThisDocument и пропишите внутри неё такую процедуру:

Private Sub Document_New()
  Call ИмяВашегоМакроса
End Sub

Тогда ярлык менять не придётся.

Лучше день потерять — потом за пять минут долететь!

4 Ответ от mikkelle 14.05.2010 12:24:48

  • mikkelle
  • полковник
  • Неактивен
  • Зарегистрирован: 21.01.2010
  • Сообщений: 227
  • Поблагодарили: 12

Re: Выполнение требуемого макроса при запуске Word

andrkar спасибо информация помогла.
Путаница возникла с ключами «/ttemplatename» и «/t filename». При указании в качестве templatename или filename имени шаблона, Ворд создавал документ с именем templatename.dotm или filename.dotm соответственно. Требуемым оказался ключ «/f filename»

Не нашел ответа на вопрос, как правильно записывать полное имя файла если в названии существуют пробелы, например «Мои документы». Квадратные скобки не помогают.

5 Ответ от viter.alex 14.05.2010 12:41:03

  • Выполнение требуемого макроса при запуске Word
  • viter.alex
  • Модератор
  • Неактивен
  • Откуда: Харьков, Украина
  • Зарегистрирован: 21.12.2009
  • Сообщений: 884
  • Поблагодарили: 140

Re: Выполнение требуемого макроса при запуске Word

Если в имени файла присутствуют пробелы, то его нужно брать в кавычки

Лучше день потерять — потом за пять минут долететь!

6 Ответ от mikkelle 14.05.2010 12:52:24

  • mikkelle
  • полковник
  • Неактивен
  • Зарегистрирован: 21.01.2010
  • Сообщений: 227
  • Поблагодарили: 12

Re: Выполнение требуемого макроса при запуске Word

viter.alex Спасибо.

7 Ответ от mikkelle 24.05.2010 10:10:55

  • mikkelle
  • полковник
  • Неактивен
  • Зарегистрирован: 21.01.2010
  • Сообщений: 227
  • Поблагодарили: 12

Re: Выполнение требуемого макроса при запуске Word

А каким образом можно запустить требуемый макрос при выполнении следующей процедуры?

Sub Start()
    Dim OldWordDoc As Word.Document
    Dim NewWordDoc As Word.Document
    Dim NewDocName As String
 
    Set OldWordDoc = Application.ActiveDocument
    NewDocName = myPath & "" & "Шаблон.dotm"
    Set NewWordDoc = Application.Documents.Add(NewDocName)
    OldWordDoc.Close
End Sub

Макрос находится в Шаблон.dotm

8 Ответ от Beck 20.09.2012 12:57:48

  • Beck
  • рядовой
  • Неактивен
  • Зарегистрирован: 20.09.2012
  • Сообщений: 1

Re: Выполнение требуемого макроса при запуске Word

viter.alex пишет:

Если макрос всегда один и тот же, то можно прописать его в стандартную процедуру, выполняющуюся при открытии документа. При редактировании шаблона откройте модуль ThisDocument и пропишите внутри неё такую процедуру:

Private Sub Document_New()
  Call ИмяВашегоМакроса
End Sub

Как я понимаю, в этом случае макрос будет отрабатывать при открытии нового документа. А как сделать так, чтобы отрабатывал и при открытии ранее созданых документов?

9 Ответ от Aleks 23.07.2014 13:23:44

  • Aleks
  • майор
  • Неактивен
  • Зарегистрирован: 19.05.2014
  • Сообщений: 69
  • Поблагодарили: 21

Re: Выполнение требуемого макроса при запуске Word

Чтобы при запуске конкретного файла выполнялся определенный макрос нужно сделать следующее:
1) Откройте «редактор VB» (доступно по «alt+f11»)
2) Выберите нужный проект (по имени файла) и запустите «редактор кода» для это проекта
3) В парвом выпадающем списке нужно переключить «(General)» на «Document» — это означает, что код будет применяться к конкретному документу.
4) Выполнение каких-либо действий при запуске файла описывается следующим кодом

Private Sub Document_Open()
    // текст вашего макроса - те действия которые необходимо выполнить при открытии файла  //
End Sub

5) Сохраните код и сохраните файл с поддержкой макросов (.docm). Об этом будет дополнительное сообщение.

10 Ответ от intersk 30.06.2016 09:04:41

  • intersk
  • рядовой
  • Неактивен
  • Зарегистрирован: 30.06.2016
  • Сообщений: 8

Re: Выполнение требуемого макроса при запуске Word

Нужно чтобы при открытии любого файла word со словом в названии файла «иск» выдавался запрос на ввод (InputBox) в поле «номер дела»

11 Ответ от intersk 30.06.2016 09:16:45

  • intersk
  • рядовой
  • Неактивен
  • Зарегистрирован: 30.06.2016
  • Сообщений: 8

Re: Выполнение требуемого макроса при запуске Word

для начала работы можно так…

Post’s attachments

начало проекта.png 32.11 Кб, файл не был скачан. 

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

Сообщений [ 11 ]

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Похожие темы

  • Ошибка при запуске макроса
  • открытие чистого шаблона при запуске word
  • при запуске Word 2003 появляется последняя сохраненная страничка
  • О запуске автомакросов
  • Заказ макроса Word
  • Заказ макроса Word
  • Ищу разработчика Макроса для word
  • Создание гиперссылки с помощью макроса Word

Выполнение требуемого макроса при запуске Word

Если вы ищите информацию по самому мощному редактору в мире Microsoft Word в сети, жаловаться на недостаток документов, литературы, различных ссылок и советов придется вряд ли. На портале о Microsoft Office Word вы узнаете про: как работать в обменном файле ворд вдвоем.
Только в разбросанном виде все это жутко неудобно. Гораздо результативнее общаться на специальных форумах. На портале о Microsoft Office Word вы узнаете про: числа в текст.
Это удобнее еще и тем, что на свою проблему вы получите отклики так сказать в развитии, можно будет обсудить, что не получается, что именно не устраивает. Наш сайт о Microsoft Office Word даст ответ про: перевести текст в pdf.
Для русскоязычных пользователей Microsoft Word можно посоветовать форум Ворд Эксперт.

На нем представлены как готовые ответы на вопросы и наработки опытных пользователей в разделах «часто задаваемые вопросы» и «готовые решения», так и обсуждения работы с документами и настройками программы в разных версиях  нашего любимого Microsoft Word. Наш сайт о Microsoft Office Word даст ответ про: макрос жирный шрифт.
Это разделы «Настройка и Форматирование», а также «Автоматизация», где вас научат, как сделать работу с программой максимально оптимальной и быстрой, написав соответствующие макросы. На портале о Microsoft Office Word вы узнаете про: как открыть поиск в ворде.

Если вы не хотите сами разбираться с макросами или ломать голову над той, либо иной, возникшей в работе проблемой, то в «Заявках на разработку» можете оставить заказ, форумчане вам помогут. Наш сайт о Microsoft Office Word даст ответ про: римские цифры прописью.

Форум Ворд Эксперт — это страничка, которую стоит запомнить, потому что она может пригодиться в любой момент. На портале о Microsoft Office Word вы узнаете про: word ключ скачать.
Форум и сайт очень разумно устроены, а все пожелания вы можете высказать в соответствующем разделе.

I’m hoping a VB/VBA expert can help me out. Consider the following:
The user opens a document in Word 2003, and within the Normal.dot AutoOpen macro, we look at current document, and if it has been opened by clicking on a link on a webpage, and meets certain other application specific criteria, close the streamed ‘copy’ and open the source document (found on a shared drive we can assume the user has access to):

Documents.Open origDoc
Documents(ActiveDocument.FullName).Close SaveChanges:=wdDoNotSaveChanges
Documents(origDoc).Activate

With ActiveDocument
    ''# Do work
End With

My thought was that I needed to call Activate to ensure that the original document was the ActiveDocument, but I’m getting a 4160 ‘Bad file name’ error on the .Activate call. If I comment out the call to .Activate, it appears that ActiveDocument is set to the origDoc document, even if there were other documents already opened (I’m not really sure how the Documents Collection is managed, and how Word determines what next ActiveDocument would be if you programatically close the current ActiveDocument)

So, does calling .Open on a document explicitly set the Document to be the ActiveDocument? Also, does calling .Activate on the already active document cause an error?

I haven’t really been able to find much documentation about this, so thanks in advance for any suggestions and insight!

Like this post? Please share to your friends:
  • Vba word поля страницы
  • Vba word номер ячейки таблицы
  • Vba word поля документа
  • Vba word номер строки
  • Vba word положение курсора