Автоматическое отображение формы при открытии файла шаблона, dotm из проводника

#vba #ms-word #word-2013

#vba #ms-word #word-2013

Вопрос:

Я написал макрос генерации документов на основе формы (на VBA) для распространения среди отдела продаж.

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

Используя автозапуск, я могу заставить форму отображаться по назначению, если word уже открыт и файл dotm открыт внутри. Однако, если я дважды щелкну файл из проводника, ничего не произойдет, и мне придется запускать макрос вручную. Я думал, что AutoExec может разрешить это, но не повезло. Я потратил немало времени, пытаясь заставить это работать с помощью поиска в Google и т. Д., Но у меня ничего не получается.

Как я могу заставить форму отображаться, даже когда файл открывается двойным щелчком мыши? Возможно ли это сделать без необходимости изменять normal.dotm для каждого пользователя?

Для дополнительной информации я использую Word 2013 с полностью включенными макросами во время тестирования. Файл dotm хранится в надежном месте.

Я использую макрос для запуска формы, подобной этой…

 Public Sub AutoOpen()
    StartPage.Show
End Sub
  

Я также пытался использовать AutoExec, но безрезультатно.

Комментарии:

1. Вы имеете в виду, что хотите открыть браузер, который позволяет пользователю выбирать только файлы dotm?

2. Привет @user3165438. Нет. Я просто хочу, чтобы форма, которую я разработал, отображалась при открытии документа, независимо от того, открыт ли он с помощью File …Open … или, если он открывается из Windows, либо двойным щелчком по файлу.

3. Возможно, это надстройка Word, которая выполняет действия с событиями. В любом случае, хорошая идея.

4. Может быть, здесь какое-то недоразумение? Генератор. dotm содержит buildingblocks, макросы, формы и стили. Sub AutoOpen() является частью генератора. dotm и вызывает startpage.show. Startpage — это форма, которая также находится в generator.dotm. Все, что мне нужно, это начальная страница. show будет запускаться автоматически при запуске генератора. dotm открыт. Если word не открыт и генератор. при двойном щелчке dotm форма не отображается. Генератор If. dotm открывается в word, форма отображается. Я хочу, чтобы он отображал форму в обоих сценариях.

Ответ №1:

В файле «generator.dotm» перейдите к Visual Basic и перейдите к объекту Microsoft Word «ThisDocument».

В верхней части редактора Visual Basic выберите «Документ» в левой части, а затем нажмите «Создать» в правой части. Private Sub Document_New() появится метод, который вы сможете редактировать. Затем вы можете вызвать свою пользовательскую форму там. Аналогично:

 Private Sub Document_New()

    Dim myForm As UserForm1
    Set myForm = New UserForm1

    myForm.Show

End Sub
  

Сохраните свой генератор.dotm и дважды щелкните по нему в проводнике Windows, и вы должны получить желаемые результаты.

Комментарии:

1. Большое вам спасибо!! Это сработало отлично, и я ценю, что вы нашли время, чтобы помочь мне с таким основным вопросом. 🙂

2. Зачем вам нужны эти первые две строки кода? Почему вы не можете просто запустить UserForm1.Show ??

3. @SteveS эти две строки кода открывают новый экземпляр, а не открывают тот же экземпляр. Итак, если вы откроете второй документ, форма второго документа будет новой, тогда как если вы это сделаете UserForm1.Show , форма будет такой же, как в первом документе, что может вызвать проблемы.